Перемножение и сложение матриц разных размерностей - 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];
- }
- }
- }
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д