В целочисленный массив размером n×n вставить строку из нулей после всех строк, в которых нет ни одного нуля - C#
Формулировка задачи:
Вставить строку из нулей после всех строк, в которых нет ни одного нуля.
Решение задачи: «В целочисленный массив размером n×n вставить строку из нулей после всех строк, в которых нет ни одного нуля»
textual
Листинг программы
private void button13_Click(object sender, EventArgs e)
{
int[,] MainMatrix = new int[5, 5]; // создаем матрицу 5x5
Random gen= new Random(); // создаем переменную под радном
string firstMatrix = ""; // строка для вывода начальной матрицы
string newMatrix = ""; // строка для вывода новой матрицы
int N=5;// здесь бeдем хранить число строк без нулей (изначально считаем что все без нулей)
///// заполняе матрицу рандомама
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
MainMatrix[i, j] = gen.Next(0, 7);
///// заполнили матрицу рандомама
//формируем строку для вывода это матрицы
for (int i = 0; i < 5; i++)
{
firstMatrix += "\n";
for (int j = 0; j < 5; j++)
firstMatrix += MainMatrix[i, j] + ";";
}
//сформировали строку для вывода это матрицы
// Считаем колличесво нелулевых строк и создаем новую матрицу нужных размеров
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
if (MainMatrix[i, j] == 0) // емли встречаем 0
{
N--;
break; // переходи на следующию строку
}
int[,] NewMatrix = new int[5+N, 5]; // создаем матрицу со сторока 5+N
int k = 0; // счетчик для новой матрицы
bool flag = false;
bool first = true;
for (int i = 0; i < 5; i++)
{
if (!first) // если не первая строка то увеличиваем к
k++;
if (flag)
k++;
flag = true; // ставим true,
first = false; // ставим false так как первая строка прошла
for (int j = 0; j < 5; j++) // переписываем строчку из 1 массива во 2
{
NewMatrix[k, j] = MainMatrix[i, j];
if (MainMatrix[i, j] == 0) // если встретим 0 то k++ не выполнится(при следующий итерации по i)
{
flag = false;
}
}
}
//формируем строку для вывода новой мотрицы
for (int i = 0; i < 5+N; i++)
{
newMatrix += "\n";
for (int j = 0; j < 5; j++)
newMatrix += NewMatrix[i, j] + ";";
}
//сформировали строку для вывода новой матрицы
MessageBox.Show(firstMatrix + "\n Колличество строк без нулйе =" + (N).ToString() + "\n" + newMatrix);
}