Сравнение элементов матриц (двумерных массивов) - C#
Формулировка задачи:
Здравствуйте! Несколько подзавис при написании программы. Суть в том, что 2 матрицы a (n*m) и b (n*m) задаются:
1.) Заданными константами
2.) Случайно
3.) Вводятся пользователем
Далее необходимо сравнить соответствующие элементы этих матриц и равные записать в вектор c (одномерный массив).
В итоге осуществил все следующим образом:
Соответственно, повторил все для 2 матриц. Как видите, выводил массивы в listBox'ы и помучившись написал вот такую процедуру для считывания массива из этих самых листбоксов:
И совсем уже в итоге запутавшись вот так вот пытался сравнивать их элементы, что явно далеко от правды:
Прошу, кто может, наставьте меня на путь истинный, ибо чувствую, что дальше только хуже сделаю, если буду продолжать тыкать пальцем в небо.
И на всякий случай текст программы целиком:
Листинг программы
- private void заданныеЗначенияАToolStripMenuItem_Click(object sender, EventArgs e)
- {
- string wow;
- for (int q=0; q<3; q++)
- {
- mas = new double[3, 3] { { 101, 202, 303}, { 323, 434, 545}, { 121, 343, 565}};
- wow = "";
- for (int m=0; m<3; m++)
- {
- wow += (mas[q, m]).ToString() + " ";
- }
- listBox1.Items.Add(wow);
- }
- }
Листинг программы
- private void случайнаяМатрицаToolStripMenuItem_Click(object sender, EventArgs e)
- {
- int q1;
- int m1;
- q1 = Convert.ToInt32(textBox1.Text);
- m1 = Convert.ToInt32(textBox2.Text);
- Random rand = new Random();
- listBox1.Items.Clear();
- String wow;
- double[,] mas = new double[q1, m1];
- for (int q = 0; q < q1; q++)
- {
- wow = "";
- for (int m = 0; m < m1; m++)
- {
- mas[q, m] = rand.Next(999);
- wow += (mas[q, m]).ToString() + " ";
- }
- listBox1.Items.Add(wow);
- }
- }
Листинг программы
- private void своиЗначенияToolStripMenuItem1_Click(object sender, EventArgs e)
- {
- n = Convert.ToInt32(textBox1.Text);
- m = Convert.ToInt32(textBox2.Text);
- a = new double[n, m];
- k = -1;
- string wow = "";
- listBox2.Items.Clear();
- k++;
- for (int j = 0; j < n; j++)
- {
- a[k, j] = Convert.ToDouble(textBox4.Lines.ElementAt(j));
- wow = wow + " " + (textBox4.Lines.ElementAt(j));
- }
- listBox2.Items.Add(wow);
- wow = "";
- textBox4.Clear();
- }
Листинг программы
- public void button1_Click(object sender, EventArgs e) // Считать матрицу a
- {
- int k = Convert.ToInt32(textBox1.Text);
- int j = Convert.ToInt32(textBox2.Text);
- int[,] arr = new int[k+1, j+1];
- for(int i = 0; i < listBox1.Items.Count; i++)
- {
- //for(int g; g<listBox1.Items[i]; )
- string a = listBox1.Items[i].ToString();
- string[] sis = Regex.Split(a, " ");
- int y=0;
- for(int x=0;x< sis.Count(); x++)
- {
- if (sis[x] != "")
- {
- y++;
- }
- string[] shly=new string[y+2];
- int l = 0;
- for(int c=0;c<sis.Count();c++)
- {
- if (sis[c] != "")
- {
- shly[l] = sis[c];
- l++;
- }
- }
- for(int b = 0; b < shly.Count()-2; b++)
- {
- arr[i, b] = Convert.ToInt32(shly[b]);
- }
- }
- }
- }
- public void button2_Click(object sender, EventArgs e) // Считать матрицу b
- {
- int k = Convert.ToInt32(textBox1.Text);
- int j = Convert.ToInt32(textBox2.Text);
- int[,] arrow = new int[k + 1, j + 1];
- for (int i = 0; i < listBox1.Items.Count; i++)
- {
- //for(int g; g<listBox1.Items[i]; )
- string a = listBox2.Items[i].ToString();
- string[] sis = Regex.Split(a, " ");
- int y = 0;
- for (int x = 0; x < sis.Count(); x++)
- {
- if (sis[x] != "")
- {
- y++;
- }
- string[] shly = new string[y + 2];
- int l = 0;
- for (int c = 0; c < sis.Count(); c++)
- {
- if (sis[c] != "")
- {
- shly[l] = sis[c];
- l++;
- }
- }
- for (int b = 0; b < shly.Count() - 2; b++)
- {
- arrow[i, b] = Convert.ToInt32(shly[b]);
- }
- }
- }
- }
Листинг программы
- private void сравнитьМатрицыToolStripMenuItem_Click(object sender, EventArgs e) // Итоговое сравнение
- {
- textBox5.Text = "";
- for (int i=1; i < n; i++)
- for (int b=1; b<m; b++)
- {
- if (arr[i, b] < arrow[i, b] || arr[i, b] > arrow[i, b])
- {
- i++;
- }
- else
- {
- textBox5.Text += " " + Convert.ToString(i);
- }
- if (arr[i, b] < arrow[i, b] || arr[i, b] > arrow[i, b])
- {
- b++;
- }
- else
- {
- textBox5.Text += " " + Convert.ToString(b);
- }
- }
- }
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace El_Solo_Lobo
- {
- public partial class Form1 : Form
- {
- double [,] mas;
- double[,] kek;
- int n, m;
- double[,] a;
- int k,j;
- double[,] den;
- string[] shly;
- int[,]arr;
- int[,] arrow;
- private void случайнаяМатрицаToolStripMenuItem_Click(object sender, EventArgs e)
- {
- int q1;
- int m1;
- q1 = Convert.ToInt32(textBox1.Text);
- m1 = Convert.ToInt32(textBox2.Text);
- Random rand = new Random();
- listBox1.Items.Clear();
- String wow;
- double[,] mas = new double[q1, m1];
- for (int q = 0; q < q1; q++)
- {
- wow = "";
- for (int m = 0; m < m1; m++)
- {
- mas[q, m] = rand.Next(999);
- wow += (mas[q, m]).ToString() + " ";
- }
- listBox1.Items.Add(wow);
- }
- }
- public Form1()
- {
- InitializeComponent();
- }
- private void случайнаяМатрицаBToolStripMenuItem_Click(object sender, EventArgs e)
- {
- int q2;
- int m2;
- q2 = Convert.ToInt32(textBox1.Text);
- m2 = Convert.ToInt32(textBox2.Text);
- Random rand = new Random();
- listBox2.Items.Clear();
- String wow;
- double[,] den = new double[q2, m2];
- for (int q = 0; q < q2; q++)
- {
- wow = "";
- for (int m = 0; m < m2; m++)
- {
- den[q, m] = rand.Next(999);
- wow += (den[q, m]).ToString() + " ";
- }
- listBox2.Items.Add(wow);
- }
- }
- private void заданныеЗначенияАToolStripMenuItem_Click(object sender, EventArgs e)
- {
- string wow;
- for (int q=0; q<3; q++)
- {
- mas = new double[3, 3] { { 101, 202, 303}, { 323, 434, 545}, { 121, 343, 565}};
- wow = "";
- for (int m=0; m<3; m++)
- {
- wow += (mas[q, m]).ToString() + " ";
- }
- listBox1.Items.Add(wow);
- }
- }
- private void своиЗначенияToolStripMenuItem1_Click(object sender, EventArgs e) // Матрица b - свои значения
- {
- n = Convert.ToInt32(textBox1.Text);
- m = Convert.ToInt32(textBox2.Text);
- a = new double[n, m];
- k = -1;
- string wow = "";
- listBox2.Items.Clear();
- k++;
- for (int j = 0; j < n; j++)
- {
- a[k, j] = Convert.ToDouble(textBox4.Lines.ElementAt(j));
- wow = wow + " " + (textBox4.Lines.ElementAt(j));
- }
- listBox2.Items.Add(wow);
- wow = "";
- textBox4.Clear();
- }
- public void button1_Click(object sender, EventArgs e) // Считать матрицу a
- {
- int k = Convert.ToInt32(textBox1.Text);
- int j = Convert.ToInt32(textBox2.Text);
- int[,] arr = new int[k+1, j+1];
- for(int i = 0; i < listBox1.Items.Count; i++)
- {
- //for(int g; g<listBox1.Items[i]; )
- string a = listBox1.Items[i].ToString();
- string[] sis = Regex.Split(a, " ");
- int y=0;
- for(int x=0;x< sis.Count(); x++)
- {
- if (sis[x] != "")
- {
- y++;
- }
- string[] shly=new string[y+2];
- int l = 0;
- for(int c=0;c<sis.Count();c++)
- {
- if (sis[c] != "")
- {
- shly[l] = sis[c];
- l++;
- }
- }
- for(int b = 0; b < shly.Count()-2; b++)
- {
- arr[i, b] = Convert.ToInt32(shly[b]);
- }
- }
- }
- }
- public void button2_Click(object sender, EventArgs e) // Считать матрицу b
- {
- int k = Convert.ToInt32(textBox1.Text);
- int j = Convert.ToInt32(textBox2.Text);
- int[,] arrow = new int[k + 1, j + 1];
- for (int i = 0; i < listBox1.Items.Count; i++)
- {
- //for(int g; g<listBox1.Items[i]; )
- string a = listBox2.Items[i].ToString();
- string[] sis = Regex.Split(a, " ");
- int y = 0;
- for (int x = 0; x < sis.Count(); x++)
- {
- if (sis[x] != "")
- {
- y++;
- }
- string[] shly = new string[y + 2];
- int l = 0;
- for (int c = 0; c < sis.Count(); c++)
- {
- if (sis[c] != "")
- {
- shly[l] = sis[c];
- l++;
- }
- }
- for (int b = 0; b < shly.Count() - 2; b++)
- {
- arrow[i, b] = Convert.ToInt32(shly[b]);
- }
- }
- }
- }
- private void сравнитьМатрицыToolStripMenuItem_Click(object sender, EventArgs e) // Итоговое сравнение
- {
- textBox5.Text = "";
- for (int i=1; i < n; i++)
- for (int b=1; b<m; b++)
- {
- if (arr[i, b] < arrow[i, b] || arr[i, b] > arrow[i, b])
- {
- i++;
- }
- else
- {
- textBox5.Text += " " + Convert.ToString(i);
- }
- if (arr[i, b] < arrow[i, b] || arr[i, b] > arrow[i, b])
- {
- b++;
- }
- else
- {
- textBox5.Text += " " + Convert.ToString(b);
- }
- }
- }
- private void заданныеЗначенияToolStripMenuItem_Click(object sender, EventArgs e)
- {
- string wow;
- for (int q = 0; q < 3; q++)
- {
- kek = new double[3, 3] { { 21, 32, 43}, { 32, 43, 54}, { 121, 333, 565} };
- wow = "";
- for (int m = 0; m < 3; m++)
- {
- wow += (kek[q, m]).ToString() + " ";
- }
- listBox2.Items.Add(wow);
- }
- }
- private void своиЗначенияToolStripMenuItem_Click(object sender, EventArgs e) // Матрица a - свои значения
- {
- n = Convert.ToInt32(textBox1.Text);
- m = Convert.ToInt32(textBox2.Text);
- a = new double[n, m];
- k = -1;
- string wow = "";
- k++;
- for (int j = 0; j < n; j++)
- {
- a[k, j] = Convert.ToDouble(textBox3.Lines.ElementAt(j));
- wow = wow + " " + (textBox3.Lines.ElementAt(j));
- }
- listBox1.Items.Add(wow);
- wow = "";
- textBox3.Clear();
- }
- }
- /* n = Convert.ToInt32(textBox1.Text);
- m = Convert.ToInt32(textBox2.Text);
- a = new double[n, m];
- j = -1;
- string wow = "";
- listBox2.Items.Clear();
- j++;
- for (int k = 0; k<n; k++)
- {
- a[k, j] = Convert.ToDouble(textBox4.Lines.ElementAt(k));
- //wow = wow + " " + (textBox4.Lines.ElementAt(k));
- listBox2.Items.Add(textBox4.Lines.ElementAt(k));
- }
- wow = "";
- textBox4.Clear();
- */
- }
Решение задачи: «Сравнение элементов матриц (двумерных массивов)»
textual
Листинг программы
- private void сравнитьМатрицыToolStripMenuItem_Click(object sender, EventArgs e) // Итоговое сравнение
- {
- int[] vek = GetVector(arr,arrow);
- listBox3.Items.Add(vek[p]);
- }
- static int[] GetVector(int[,] array1, int[,] array2)
- {
- if (array1.GetLength(0) != array2.GetLength(0) || array1.GetLength(1) != array2.GetLength(1))
- return null;
- List<int> vector = new List<int>();
- for (int i = 0; i < array1.GetLength(0); i++)
- for (int j = 0; j < array1.GetLength(1); j++)
- {
- if (array1[i, j] == array2[i, j])
- vector.Add(array1[i, j]);
- }
- return vector.ToArray();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д