Перемножение и сложение матриц разных размерностей - C#

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

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

Делал я значит задание на перемножение матриц разных размерностей. А второе задание, сложение матриц. Я сразу посмотрел, как их складывать и понял, что легко, вроде бы 3x3 и 2x2 и тд....Поменять знак в 1 задание и все...А теперь я понял, что не так все просто. Мы же можем складывать 3x2 и 2x3... Перевернуть 3х2, и получится 2х3+2х3...Как это можно сделать? чтобы, строки и стобцы поменяли свои значения? Код у меня в форме, скинуть, если кто возьмется мне помочь-я смогу. Помогите пожалуйста.

Решение задачи: «Перемножение и сложение матриц разных размерностей»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace Яп10_вар_3._4__1_часть
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         double[,] matrix1, matrix2, matrix3;
  16.         public Form1()
  17.         {
  18.             InitializeComponent();
  19.         }
  20.  
  21.  
  22.         private void button1_Click(object sender, EventArgs e)
  23.         {
  24.             try
  25.             {
  26.                 Matrix.matrixADD(Convert.ToInt32(textBox1.Text), out matrix1);
  27.                 add(matrix1, dataGridView1, Convert.ToInt32(textBox1.Text));
  28.             }
  29.             catch
  30.             {
  31.                 textBox1.Text = null;
  32.                 MessageBox.Show("Некорректный ввод");
  33.                 dataGridView1.Columns.Clear();
  34.                 dataGridView1.Rows.Clear();
  35.                 dataGridView2.Columns.Clear();
  36.                 dataGridView2.Rows.Clear();
  37.                 dataGridView3.Columns.Clear();
  38.                 dataGridView3.Rows.Clear();
  39.             }
  40.         }
  41.         public static void add(double[,] matrix, DataGridView dataGridView, int n)//указываем таблицу в который пишем количество строк и столбцов
  42.         {
  43.             dataGridView.RowCount = n;
  44.             dataGridView.ColumnCount = n;
  45.             for (int i = 0; i < n; i++)
  46.             {
  47.                 for (int j = 0; j < n; j++)
  48.                 {
  49.                     dataGridView.Rows[i].Cells[j].Value = matrix[i, j]; //пишем значения из массива в ячейки таблицы
  50.                 }
  51.             }
  52.         }
  53.  
  54.         private void button3_Click(object sender, EventArgs e)
  55.         {
  56.             try
  57.             {
  58.                 Matrix.matrixUMN(Convert.ToInt32(textBox1.Text), matrix1, matrix2, out matrix3);
  59.                 add(matrix3, dataGridView3, Convert.ToInt32(textBox1.Text));
  60.             }
  61.             catch
  62.             {
  63.                 textBox1.Text = null;
  64.                 MessageBox.Show("Некорректный ввод");
  65.                 dataGridView1.Columns.Clear();
  66.                 dataGridView1.Rows.Clear();
  67.                 dataGridView2.Columns.Clear();
  68.                 dataGridView2.Rows.Clear();
  69.                 dataGridView3.Columns.Clear();
  70.                 dataGridView3.Rows.Clear();
  71.             }
  72.         }
  73.  
  74.         private void button2_Click(object sender, EventArgs e)
  75.         {
  76.             try
  77.             {
  78.                 Matrix.matrixADD(Convert.ToInt32(textBox1.Text), out matrix2);
  79.                 add(matrix2, dataGridView2, Convert.ToInt32(textBox1.Text));
  80.             }
  81.             catch
  82.             {
  83.                 textBox1.Text = null;
  84.                 MessageBox.Show("Некорректный ввод");
  85.                 dataGridView1.Columns.Clear();
  86.                 dataGridView1.Rows.Clear();
  87.                 dataGridView2.Columns.Clear();
  88.                 dataGridView2.Rows.Clear();
  89.                 dataGridView3.Columns.Clear();
  90.                 dataGridView3.Rows.Clear();
  91.             }
  92.         }
  93.  
  94.         class Matrix
  95.  
  96.         {
  97.             public static void matrixADD(int n, out double[,] matrix)
  98.             {
  99.                 Random rd = new Random();
  100.                 matrix = new double[n, n];
  101.                 for (int i = 0; i < n; i++)
  102.                 {
  103.                     for (int j = 0; j < n; j++)
  104.                     {
  105.                         matrix[i, j] = rd.Next(1, 10);
  106.                     }
  107.                 }
  108.             }
  109.             public static void matrixUMN(int n, double[,] matrix1, double[,] matrix2, out double[,] matrix3)
  110.             {
  111.                 matrix3 = new double[n, n];
  112.                 for (int i = 0; i < n; i++)
  113.                 {
  114.                     for (int j = 0; j < n; j++)
  115.                     {
  116.                         for (int k = 0; k < n; k++)
  117.                         {
  118.                             matrix3[i, j] += matrix1[i, k] * matrix2[k, j];
  119.                         }
  120.                     }
  121.                 }
  122.             }
  123.  
  124.         }
  125.                 }
  126.             }

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


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

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

13   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы