Вывести одномерный массив с неизвестным количеством элементов в listBox - C#

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

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

Доброй ночи всем, кто не спит. Такое дело, нужно сравнить 2 матрицы и после равные соответствующие элементы вывести в вектор. То есть если a11=b11, то это число записывается в вектор, если нет, то не записывается. Воспользовался для сравнения методом GetVector, но получается, что невозможно заранее рассчитать количество элементов такого массива. Так как же его вывести? Вот как у меня это все выглядит:
Листинг программы
  1. static int[] GetVector(int[,] array1, int[,] array2) // Метод для сравнения матриц
  2. {
  3. if (array1.GetLength(0) != array2.GetLength(0) || array1.GetLength(1) != array2.GetLength(1))
  4. return null;
  5. List<int> vector = new List<int>();
  6. for (int i = 0; i < array1.GetLength(0); i++)
  7. for (int j = 0; j < array1.GetLength(1); j++)
  8. {
  9. if (array1[i, j] == array2[i, j])
  10. vector.Add(array1[i, j]);
  11. }
  12. return vector.ToArray();
  13. }
  14. private void сравнитьМатрицыToolStripMenuItem_Click(object sender, EventArgs e)
  15. {
  16. listBox1.Items.Clear();
  17. int n = dataGridView1.ColumnCount;
  18. int m = dataGridView1.RowCount - 1;
  19. int[,] a = new int[n, m];
  20. for (int i = 0; i < n; i++)
  21. for (int j = 0; j < m; j++)
  22. a[i, j] = Convert.ToInt32(dataGridView1[i, j].Value);
  23. //
  24. int n1 = dataGridView2.ColumnCount;
  25. int m1 = dataGridView2.RowCount - 1;
  26. int[,] b = new int[n1, m1];
  27. for (int i = 0; i < n1; i++)
  28. for (int j = 0; j < m1; j++)
  29. b[i, j] = Convert.ToInt32(dataGridView1[i, j].Value);
  30. int [] Vector = GetVector(a, b);
  31. string wow;
  32. wow = "";
  33. for (int i = 0; i < n; i++)
  34. {
  35. wow += (Vector[i]).ToString() + " ";
  36. }
  37. listBox1.Items.Add(wow);
  38. }
И вот на всякий случай код программы целиком. Реализована возможность случайной генерации матриц, ввода заранее заданных матриц (констант) и ввода с клавиатуры. Для всего юзаю dataGridView'ы
Листинг программы
  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. namespace Desantnik
  11. {
  12. public partial class Form1 : Form
  13. {
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. }
  18. private void случайноеЗаполнениеToolStripMenuItem_Click(object sender, EventArgs e) // Матрица a
  19. {
  20. int q1;
  21. int m1;
  22. q1 = Convert.ToInt32(textBox1.Text);
  23. m1 = Convert.ToInt32(textBox2.Text);
  24. Random rand = new Random();
  25. double[,] mas = new double[q1, m1];
  26. for (int q = 0; q < q1; q++)
  27. {
  28. for (int m = 0; m < m1; m++)
  29. {
  30. mas[q, m] = rand.Next(999);
  31. }
  32. dataGridView1.RowCount = q1;
  33. dataGridView1.ColumnCount = m1;
  34. int i, j;
  35. for (i = 0; i < q1; ++i)
  36. for (j = 0; j < m1; ++j)
  37. dataGridView1.Rows[i].Cells[j].Value = mas[i, j];
  38. }
  39. }
  40. private void констатнтыToolStripMenuItem_Click(object sender, EventArgs e) // Матрица a
  41. {
  42. for (int n = 0; n < 3; n++)
  43. {
  44. double [,] mas = new double[3, 4] { { 101, 202, 303, 909 }, { 323, 434, 545, 606 }, { 121, 202, 343, 969 } };
  45. dataGridView1.RowCount = 3;
  46. dataGridView1.ColumnCount = 4;
  47. int i, j;
  48. for (i = 0; i < 3; ++i)
  49. for (j = 0; j < 4; ++j)
  50. dataGridView1.Rows[i].Cells[j].Value = mas[i, j];
  51. }
  52. }
  53. private void своиЗначенияToolStripMenuItem_Click(object sender, EventArgs e) // Матрица a
  54. {
  55. int n = dataGridView1.ColumnCount;
  56. int m = dataGridView1.RowCount - 1;
  57. int[,] a = new int[n, m];
  58. for (int i = 0; i < n; i++)
  59. for (int j = 0; j < m; j++)
  60. a[i, j] = Convert.ToInt32(dataGridView1[i, j].Value);
  61. }
  62. private void задатьРазмерностьToolStripMenuItem1_Click(object sender, EventArgs e) // Матрица a
  63. {
  64. dataGridView1.Columns.Clear();
  65. dataGridView2.Columns.Clear();
  66. int n = int.Parse(textBox1.Text)-1;
  67. int m = int.Parse(textBox2.Text);
  68. for (int i = 0; i < m; i++)
  69. {
  70. dataGridView1.Columns.Add("", "");
  71. }
  72. for (int j = 0; j < n; j++)
  73. {
  74. dataGridView1.Rows.Add();
  75. }
  76. dataGridView2.Columns.Clear();
  77. for (int i = 0; i < m; i++)
  78. {
  79. dataGridView2.Columns.Add("", "");
  80. }
  81. for (int j = 0; j < n; j++)
  82. {
  83. dataGridView2.Rows.Add();
  84. }
  85. }
  86. private void случайноеЗаполнениеToolStripMenuItem1_Click(object sender, EventArgs e) // Матрица b
  87. {
  88. int q1;
  89. int m1;
  90. q1 = Convert.ToInt32(textBox1.Text);
  91. m1 = Convert.ToInt32(textBox2.Text);
  92. Random rand = new Random();
  93. double[,] mas = new double[q1, m1];
  94. for (int q = 0; q < q1; q++)
  95. {
  96. for (int m = 0; m < m1; m++)
  97. {
  98. mas[q, m] = rand.Next(999);
  99. }
  100. dataGridView2.RowCount = q1;
  101. dataGridView2.ColumnCount = m1;
  102. int i, j;
  103. for (i = 0; i < q1; ++i)
  104. for (j = 0; j < m1; ++j)
  105. dataGridView2.Rows[i].Cells[j].Value = mas[i, j];
  106. }
  107. }
  108. private void константыToolStripMenuItem_Click(object sender, EventArgs e)
  109. {
  110. for (int n = 0; n < 3; n++)
  111. {
  112. double[,] mas = new double[3, 4] { { 103, 221, 32, 903 }, { 323, 43, 545, 606 }, { 121, 212, 343, 965 } };
  113. dataGridView2.RowCount = 3;
  114. dataGridView2.ColumnCount = 4;
  115. int i, j;
  116. for (i = 0; i < 3; ++i)
  117. for (j = 0; j < 4; ++j)
  118. dataGridView2.Rows[i].Cells[j].Value = mas[i, j];
  119. }
  120. }
  121. private void своиЗначенияToolStripMenuItem1_Click(object sender, EventArgs e) // Матрица b
  122. {
  123. int n = dataGridView2.ColumnCount;
  124. int m = dataGridView2.RowCount - 1;
  125. int[,] b = new int[n, m];
  126. for (int i = 0; i < n; i++)
  127. for (int j = 0; j < m; j++)
  128. b[i, j] = Convert.ToInt32(dataGridView1[i, j].Value);
  129. }
  130. static int[] GetVector(int[,] array1, int[,] array2) // Метод для сравнения матриц
  131. {
  132. if (array1.GetLength(0) != array2.GetLength(0) || array1.GetLength(1) != array2.GetLength(1))
  133. return null;
  134. List<int> vector = new List<int>();
  135. for (int i = 0; i < array1.GetLength(0); i++)
  136. for (int j = 0; j < array1.GetLength(1); j++)
  137. {
  138. if (array1[i, j] == array2[i, j])
  139. vector.Add(array1[i, j]);
  140. }
  141. return vector.ToArray();
  142. }
  143. private void сравнитьМатрицыToolStripMenuItem_Click(object sender, EventArgs e)
  144. {
  145. listBox1.Items.Clear();
  146. int n = dataGridView1.ColumnCount;
  147. int m = dataGridView1.RowCount - 1;
  148. int[,] a = new int[n, m];
  149. for (int i = 0; i < n; i++)
  150. for (int j = 0; j < m; j++)
  151. a[i, j] = Convert.ToInt32(dataGridView1[i, j].Value);
  152. //
  153. int n1 = dataGridView2.ColumnCount;
  154. int m1 = dataGridView2.RowCount - 1;
  155. int[,] b = new int[n1, m1];
  156. for (int i = 0; i < n1; i++)
  157. for (int j = 0; j < m1; j++)
  158. b[i, j] = Convert.ToInt32(dataGridView1[i, j].Value);
  159. int [] Vector = GetVector(a, b);
  160. string wow;
  161. wow = "";
  162. for (int i = 0; i < n; i++)
  163. {
  164. wow += (Vector[i]).ToString() + " ";
  165. }
  166. listBox1.Items.Add(wow);
  167. }
  168. }
  169. }
Помогите, если можете, я уже потерялся во всем этом.

Решение задачи: «Вывести одномерный массив с неизвестным количеством элементов в listBox»

textual
Листинг программы
  1. listBox1.DataSource = твойМассив;

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


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

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

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

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

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

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