Загрузка данных
----------------Упорядочивание строк главной диагонали-----------------
Random rnd = new Random();
dataGridView1.ColumnCount = 3;
dataGridView1.RowCount = 3;
int[] diag = new int[3]; //так как нам нужны 3 элемента главной диагонали создаем масссив состоящий из 3х чиел
// Заполняем матрицу и запоминаем диагональные элементы
for (int i = 0; i < 3; i++) //i номер строки
{
for (int j = 0; j < 3; j++) //j номер столбца
{
int value = rnd.Next(1, 100); //генерируем случайное число
dataGridView1.Rows[i].Cells[j].Value = value; //вставляем его в ячейку. i - обращаемся к строчке. j - обращаемся к столбцу. value - это поля
if (i == j)
diag[i] = value;
}
}
// Сортируем диагональ
Array.Sort(diag);
// Обновляем диагональные элементы
for (int i = 0; i < 3; i++)
{
dataGridView1.Rows[i].Cells[i].Value = diag[i];
}
и побочной
Random rnd = new Random();
dataGridView1.RowCount = 3;
dataGridView1.ColumnCount = 3;
int[] diag = new int[3];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
int value = rnd.Next(1, 200);
dataGridView1.Rows[i].Cells[j].Value = value;
if (i + j == 2)
diag[i] = value;
}
}
Array.Sort(diag);
for (int i = 0; i < 3; i++)
{
dataGridView1.Rows[i].Cells[2 - i].Value = diag[i];
}
---------------------Возрастание верхней строки------------------
Random rnd = new Random();
int n = 3, m = 3;
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
for (int j = 0; j < m; j++) dataGridView1.Columns.Add("", "");
dataGridView1.Rows.Add(n);
int[,] a = new int[n, m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
a[i, j] = rnd.Next(1, 200);
var order = Enumerable.Range(0, m).OrderBy(j => a[0, j]).ToArray();
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
dataGridView1.Rows[i].Cells[j].Value = a[i, order[j]];
и нижней
Random rnd = new Random();
int n = 3, m = 3;
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
for (int j = 0; j < m; j++) dataGridView1.Columns.Add("", "");
dataGridView1.Rows.Add(n);
int[,] a = new int[n, m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
a[i, j] = rnd.Next(1, 200);
var order = Enumerable.Range(0, m).OrderBy(j => a[0, j]).ToArray();
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
dataGridView1.Rows[i].Cells[j].Value = a[i, order[j]];
--------------СТОЛБЕЦ ВОЗРАСТАНИЕ-----------
Random rnd = new Random();
int n = 3, m = 3;
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
for (int j = 0; j < m; j++) dataGridView1.Columns.Add("", "");
dataGridView1.Rows.Add(n);
int[,] a = new int[n, m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
a[i, j] = rnd.Next(1, 200);
// Получаем сумму элементов первой строки (или можете взять другой критерий)
int[] rowSums = new int[n];
for (int i = 0; i < n; i++)
{
int sum = 0;
for (int j = 0; j < m; j++)
sum += a[i, j];
rowSums[i] = sum;
}
// Создаём порядок строк по возрастанию суммы элементов первой строки
var order = Enumerable.Range(0, n).OrderBy(i => a[i, 0]).ToArray();
// Выводим строки по новому порядку
for (int idx = 0; idx < n; idx++)
{
int rowIndex = order[idx];
for (int j = 0; j < m; j++)
{
dataGridView1.Rows[idx].Cells[j].Value = a[rowIndex, j];
}
}
последний столбец
Random rnd = new Random();
int n = 3, m = 3;
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
for (int j = 0; j < m; j++) dataGridView1.Columns.Add("", "");
dataGridView1.Rows.Add(n);
int[,] a = new int[n, m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
a[i, j] = rnd.Next(1, 200);
// Сортируем строки по последнему элементу (последний столбец) по возрастанию
var order = Enumerable.Range(0, n).OrderBy(i => a[i, m - 1]).ToArray();
// Выводим строки в новом порядке
for (int idx = 0; idx < n; idx++)
{
int rowIndex = order[idx];
for (int j = 0; j < m; j++)
{
dataGridView1.Rows[idx].Cells[j].Value = a[rowIndex, j];
}
}
------------------УМНОЖЕНИЕ---------
private void button1_Click(object sender, EventArgs e)
{
Random rnd = new Random();
dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();
// Создаем 3 столбца
for (int j = 0; j < 3; j++)
dataGridView1.Columns.Add("", "");
// Добавляем 3 строки
dataGridView1.Rows.Add(3);
// Заполняем матрицу рандомными числами
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
dataGridView1.Rows[i].Cells[j].Value = rnd.Next(1, 100);
}
}
Random rnd2 = new Random();
dataGridView2.Columns.Clear();
dataGridView2.Rows.Clear();
for (int j = 0; j < 3; j++)
dataGridView2.Columns.Add("", "");
dataGridView2.Rows.Add(3);
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
dataGridView2.Rows[i].Cells[j].Value = rnd2.Next(1, 100);
}
}
}
private void button2_Click(object sender, EventArgs e)
{
// Проверка через Rows.Count и Columns.Count
if (dataGridView1.Rows.Count < 3 || dataGridView1.Columns.Count < 3 ||
dataGridView2.Rows.Count < 3 || dataGridView2.Columns.Count < 3)
{
MessageBox.Show("Матрицы должны быть размером 3x3!");
return;
}
int[,] matrix1 = new int[3, 3];
int[,] matrix2 = new int[3, 3];
int[,] result = new int[3, 3];
// Читаем первую матрицу
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
matrix1[i, j] = Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value);
// Читаем вторую матрицу
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
matrix2[i, j] = Convert.ToInt32(dataGridView2.Rows[i].Cells[j].Value);
// Умножение матриц
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
{
result[i, j] = 0;
for (int k = 0; k < 3; k++)
result[i, j] += matrix1[i, k] * matrix2[k, j];
}
// Вывод результата
dataGridView3.Columns.Clear();
dataGridView3.Rows.Clear();
for (int j = 0; j < 3; j++)
dataGridView3.Columns.Add("", "");
dataGridView3.Rows.Add(3);
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
dataGridView3.Rows[i].Cells[j].Value = result[i, j];
}
-------------------ТРАНСПОРТИРОВАНИЕ--------------
private void button1_Click(object sender, EventArgs e)
{
Random rnd = new Random();
dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();
// Создаем 3 столбца
for (int j = 0; j < 3; j++)
dataGridView1.Columns.Add("", "");
// Добавляем 3 строки
dataGridView1.Rows.Add(3);
// Заполняем матрицу рандомными числами
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
dataGridView1.Rows[i].Cells[j].Value = rnd.Next(1, 100);
}
}
Random rnd2 = new Random();
dataGridView2.Columns.Clear();
dataGridView2.Rows.Clear();
for (int j = 0; j < 3; j++)
dataGridView2.Columns.Add("", "");
dataGridView2.Rows.Add(3);
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
dataGridView2.Rows[i].Cells[j].Value = rnd2.Next(1, 100);
}
}
}
private void button2_Click(object sender, EventArgs e)
{
// Проверяем, что матрица не пустая
if (dataGridView1.Rows.Count < 1 || dataGridView1.Columns.Count < 1)
{
MessageBox.Show("Сначала создайте матрицу!");
return;
}
int rows = dataGridView1.Rows.Count;
int cols = dataGridView1.Columns.Count;
// Читаем матрицу из DataGridView
int[,] A = new int[rows, cols];
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
A[i, j] = Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value);
// Создаем транспонированную матрицу
int[,] AT = new int[cols, rows];
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
AT[j, i] = A[i, j];
// Очищаем и создаем новые колонки для вывода
dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();
for (int j = 0; j < rows; j++) // строки стали столбцами
dataGridView1.Columns.Add("", "");
dataGridView1.Rows.Add(cols); // столбцы стали строками
// Заполняем транспонированную матрицу в DataGridView
for (int i = 0; i < cols; i++)
for (int j = 0; j < rows; j++)
dataGridView1.Rows[i].Cells[j].Value = AT[i, j];
}
------------------ВЕЩЕСТВЕННАЯ СТРОКИ----------------
Random rnd = new Random();
int n = 3, m = 3;
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
for (int j = 0; j < m; j++)
dataGridView1.Columns.Add("", "");
dataGridView1.Rows.Add(n);
double[,] a = new double[n, m]; // double вместо int
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
a[i, j] = Math.Round(rnd.NextDouble() * 200, 2); // вещественные числа
// Сортируем столбцы по первой строке (по возрастанию)
var order = Enumerable.Range(0, m).OrderBy(j => a[0, j]).ToArray();
// Выводим с переставленными столбцами
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
dataGridView1.Rows[i].Cells[j].Value = a[i, order[j]];
-------------ВЕЩЕСТВЕННАЯ СТОЛБЦЫ----------------
Random rnd = new Random();
int n = 3, m = 3;
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
for (int j = 0; j < m; j++)
dataGridView1.Columns.Add("", "");
dataGridView1.Rows.Add(n);
double[,] a = new double[n, m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
a[i, j] = Math.Round(rnd.NextDouble() * 200, 2);
var order = Enumerable.Range(0, n).OrderBy(i => a[i, 0]).ToArray();
for (int idx = 0; idx < n; idx++)
{
int rowIndex = order[idx];
for (int j = 0; j < m; j++)
{
dataGridView1.Rows[idx].Cells[j].Value = a[rowIndex, j];
}
}