Подсчитать количество нулей в каждой строке матрицы и записать полученные числа в одномерный массив - 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();
}

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


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

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

11   голосов , оценка 4.182 из 5
Похожие ответы