Перемножение и сложение матриц разных размерностей - C#
Формулировка задачи:
Делал я значит задание на перемножение матриц разных размерностей. А второе задание, сложение матриц. Я сразу посмотрел, как их складывать и понял, что легко, вроде бы 3x3 и 2x2 и тд....Поменять знак в 1 задание и все...А теперь я понял, что не так все просто. Мы же можем складывать 3x2 и 2x3... Перевернуть 3х2, и получится 2х3+2х3...Как это можно сделать? чтобы, строки и стобцы поменяли свои значения? Код у меня в форме, скинуть, если кто возьмется мне помочь-я смогу. Помогите пожалуйста.
Решение задачи: «Перемножение и сложение матриц разных размерностей»
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 Яп10_вар_3._4__1_часть { public partial class Form1 : Form { double[,] matrix1, matrix2, matrix3; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { Matrix.matrixADD(Convert.ToInt32(textBox1.Text), out matrix1); add(matrix1, dataGridView1, Convert.ToInt32(textBox1.Text)); } catch { textBox1.Text = null; MessageBox.Show("Некорректный ввод"); dataGridView1.Columns.Clear(); dataGridView1.Rows.Clear(); dataGridView2.Columns.Clear(); dataGridView2.Rows.Clear(); dataGridView3.Columns.Clear(); dataGridView3.Rows.Clear(); } } public static void add(double[,] matrix, DataGridView dataGridView, int n)//указываем таблицу в который пишем количество строк и столбцов { dataGridView.RowCount = n; dataGridView.ColumnCount = n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { dataGridView.Rows[i].Cells[j].Value = matrix[i, j]; //пишем значения из массива в ячейки таблицы } } } private void button3_Click(object sender, EventArgs e) { try { Matrix.matrixUMN(Convert.ToInt32(textBox1.Text), matrix1, matrix2, out matrix3); add(matrix3, dataGridView3, Convert.ToInt32(textBox1.Text)); } catch { textBox1.Text = null; MessageBox.Show("Некорректный ввод"); dataGridView1.Columns.Clear(); dataGridView1.Rows.Clear(); dataGridView2.Columns.Clear(); dataGridView2.Rows.Clear(); dataGridView3.Columns.Clear(); dataGridView3.Rows.Clear(); } } private void button2_Click(object sender, EventArgs e) { try { Matrix.matrixADD(Convert.ToInt32(textBox1.Text), out matrix2); add(matrix2, dataGridView2, Convert.ToInt32(textBox1.Text)); } catch { textBox1.Text = null; MessageBox.Show("Некорректный ввод"); dataGridView1.Columns.Clear(); dataGridView1.Rows.Clear(); dataGridView2.Columns.Clear(); dataGridView2.Rows.Clear(); dataGridView3.Columns.Clear(); dataGridView3.Rows.Clear(); } } class Matrix { public static void matrixADD(int n, out double[,] matrix) { Random rd = new Random(); matrix = new double[n, n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { matrix[i, j] = rd.Next(1, 10); } } } public static void matrixUMN(int n, double[,] matrix1, double[,] matrix2, out double[,] matrix3) { matrix3 = new double[n, n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { matrix3[i, j] += matrix1[i, k] * matrix2[k, j]; } } } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д