Как заполнить матрицу случайными числами? - 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();
}
}
}