Подсчитать количество нулей в каждой строке матрицы и записать полученные числа в одномерный массив - C#
Формулировка задачи:
В прямоугольной матрице B, содержащий только нули и единицы, подсчитать количество нулей в каждой строке и записать полученные числа в одномерный массив P. Создать матрицу Z , количество столбцов в каждой строке которой определяется соответствующим значением из массива P . В каждую строку матрицы Z записать подряд индексы нулей соответствующих строк матрицы B . Инвертировать порядок элементов в каждой строке матрицы Z.
Решение задачи: «Подсчитать количество нулей в каждой строке матрицы и записать полученные числа в одномерный массив»
textual
Листинг программы
private static void Main()
{
int rowsCount = 5;
int columnCount = 8;
int[,] b = new int[rowsCount, columnCount];
int[] p = new int[rowsCount];
Random rand = new Random();
Console.WriteLine("Матрица B:");
for (int i = 0; i < rowsCount; i++)
{
for (int j = 0; j < columnCount; j++)
{
b[i, j] = rand.Next(0, 2);
Console.Write(b[i, j] + " ");
}
Console.WriteLine();
}
Console.WriteLine("Массив P:");
for (int i = 0; i < rowsCount; i++)
{
int countZero = 0;
for (int j = 0; j < columnCount; j++)
{
if (b[i, j] == 0)
{
countZero++;
}
}
p[i] = countZero;
Console.WriteLine(p[i]);
}
int[][] Z = new int[rowsCount][];
for (int i = 0; i < Z.Length; i++)
Z[i] = new int[p[i]];
for (int i = 0; i < rowsCount; i++)
{
int zeroCounter = 0;
for (int j = 0; j < columnCount; j++)
{
if (b[i, j] == 0)
Z[i][zeroCounter++] = j;
}
}
Console.WriteLine("Матрица Z:");
for (int i = 0; i < rowsCount; i++)
{
for (int j = 0; j < Z[i].Length; j++)
{
Console.Write(Z[i][j] + " ");
}
Console.WriteLine();
}
for (int i = 0; i < Z.Length; i++)
Array.Reverse(Z[i]);
Console.WriteLine("Инвертированная матрица Z:");
for (int i = 0; i < rowsCount; i++)
{
for (int j = 0; j < Z[i].Length; j++)
{
Console.Write(Z[i][j] + " ");
}
Console.WriteLine();
}
Console.ReadKey();
}