Как заполнить матрицу случайными числами? - C#

Узнай цену своей работы

Формулировка задачи:

Нужно прикрути автозаполнение матриц произвольными числами. заполнение должно происходить при нажатии на кнопку 2. Но я не знаю как это сделать.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Zadanie4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int m, n, p;
        int[,] A;
        int[,] B;
        private void button1_Click(object sender, EventArgs e)
        {
            ErrorCount.Visible = false;
            ErrorMas.Visible = false;
            int.TryParse(textBox1.Text, out m);
            dataGridView1.RowCount = m;
            dataGridView3.RowCount = m;
            int.TryParse(textBox2.Text, out n);
            dataGridView1.ColumnCount = n;
            dataGridView2.RowCount = n;
            int.TryParse(textBox3.Text, out p);
            dataGridView2.ColumnCount = p;
            dataGridView3.ColumnCount = p;
            A = new int[m, n];
            B = new int[n, p];
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            ErrorCount.Visible = false;
            ErrorMas.Visible = false;
            try
            {
                for (int i = 0; i < m; ++i)
                    for (int j = 0; j < n; ++j)
                        if (dataGridView1.Rows[i].Cells[j].Value.ToString() != "")
                            A[i, j] = Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value);
                        else throw new Exception();
            }
            catch
            {
                ErrorCount.Visible = true;
            }
            try
            {
                for (int i = 0; i < m; ++i)
                    for (int j = 0; j < n; ++j)
                        if (dataGridView2.Rows[i].Cells[j].Value.ToString() != "")
                            B[i, j] = Convert.ToInt32(dataGridView2.Rows[i].Cells[j].Value);
                        else throw new Exception();
            }
            catch
            {
                ErrorMas.Visible = true;
            }
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
             for (int i = 0; i < m; ++i)
             {
                    for (int j = 0; j < p; ++j)
                    {
                        int sum = 0;
                        for (int ij = 0; ij < n; ++ij)
                            sum += A[i, ij] * B[ij,j];
                        dataGridView3.Rows[i].Cells[j].Value = sum;
                    }
             }
             dataGridView3.Visible = true;
        }
    }
}

Решение задачи: «Как заполнить матрицу случайными числами?»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace задание4
{
    public partial class Form1 : Form
    {
        int m, n, p;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            m = (int)numericUpDown1.Value;
            n = (int)numericUpDown2.Value;
            p = (int)numericUpDown3.Value;
            dataGridView1.Rows.Clear();
            dataGridView1.Columns.Clear();
            for (int i = 0; i < n; i++) dataGridView1.Columns.Add(i.ToString(), (i+1).ToString());
            for (int i = 0; i < m; i++) dataGridView1.Rows.Add();
 
            dataGridView2.Rows.Clear();
            dataGridView2.Columns.Clear();
            for (int i = 0; i < p; i++) dataGridView2.Columns.Add(i.ToString(), (i + 1).ToString());
            for (int i = 0; i < n; i++) dataGridView2.Rows.Add();
 
            dataGridView3.Rows.Clear();
            dataGridView3.Columns.Clear();
            for (int i = 0; i < p; i++) dataGridView3.Columns.Add(i.ToString(), (i + 1).ToString());
            for (int i = 0; i < m; i++) dataGridView3.Rows.Add();
            button1.Enabled = false;
            button2.Enabled = true;
            button3.Enabled = false;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Random rnd = new Random();
             for (int j = 0; j < m; j++)
                 for (int i = 0; i < n; i++)
                    dataGridView1[i,j].Value = rnd.Next(10)-5;
 
             for (int j = 0; j < n; j++)
                 for (int i = 0; i < p; i++)
                     dataGridView2[i, j].Value = rnd.Next(10) - 5;
             button1.Enabled = false;
             button2.Enabled = false;
             button3.Enabled = true;
 
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            button1.Enabled = true;
            button2.Enabled = false;
            button3.Enabled = false;
 
           int[,] a=new int[m,n];
           int[,] b = new int[n, p];
           int[,] resMass = new int[m, p];
 
           for (int j = 0; j < m; j++)
               for (int i = 0; i < n; i++)
                   a[j,i]=(int)dataGridView1[i, j].Value;
 
           for (int j = 0; j < n; j++)
               for (int i = 0; i < p; i++)
                  b[j,i]= (int)dataGridView2[i, j].Value;
 
          for (int i = 0; i < m; i++)
                for (int j = 0; j < p; j++)
                    for (int k = 0; k < n; k++)
                        resMass[i, j] += a[i, k] * b[k, j];
 
          for (int j = 0; j < m; j++)
              for (int i = 0; i < p; i++)
                  dataGridView3[i, j].Value = resMass[j, i].ToString();
 
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы