Определить количество строк матрицы, содержащих хотя бы один нулевой элемент - C (СИ) (70369)

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

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

Дана целочисленная прямоугольная матрица. Определить количество строк, содержащих хотя бы один нулевой элемент; номер столбца, в которой находится самая длинная серия одинаковых элементов. Нулевые строки нашел. С серией ничего не выходит(
#include <stdio.h>
int main()
{
    int n = 3, m = 4, k = 0;
    int mas[30][30];
    int i, j, x = 0, y = 0;
    printf("Dana pryamougol'naya matrica razmernosti 3x4\n");
 
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++) {
            printf("Vvedite [%d;%d] element matrici : ", i + 1, j + 1);
            scanf_s("%d", &mas[i][j]);
        }
 
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
            printf("%i  ", mas[i][j]);
        printf("\n");
    }
 
    for (int i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
            if (mas[i][j] == 0)
            {
                x++; break;
            }
    }
    printf("Kol-vo strok s nulevim elementom : %d \n", x);

    }
}

Решение задачи: «Определить количество строк матрицы, содержащих хотя бы один нулевой элемент»

textual
Листинг программы
#include <stdio.h>
int main()
{
    int n = 3, m = 4;
    int mas[30][30];
    int i, j, x = 0, y = 0;
    printf("Dana pryamougol'naya matrica razmernosti 3x4\n");
 
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++) {
            printf("Vvedite [%d;%d] element matrici : ", i + 1, j + 1);
            scanf_s("%d", &mas[i][j]);
        }
 
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
            printf("%i  ", mas[i][j]);
        printf("\n");
    }
 
    for (int i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
            if (mas[i][j] == 0)
            {
                x++; break;
            }
    }
    printf("Kol-vo strok s nulevim elementom : %d \n", x);
 
    int k = 0, N, h, l;
    for (j = 0; j <= m; j++)
    {
        l = 0;
        h = 0;
        for (i = 0; i < n ; i++)
        {
            if (mas[i][j] == mas[i + 1][j])
            {
                l++;
            }
            else
            {
                h = l;
                l = 0;
            }
            if (h>k)
            {
                k = h;
                N = j;
            }
        }
    }
    if (0 != k)
    {
        printf ( "Nomer stolbca s samoi dlinnoi seriei : %d ", N + 1);
    }
    else
    {
        printf (" Net podhodyashih stolbcov");
    }
 
 
}

Объяснение кода листинга программы

Код представляет собой программу на языке C, которая выполняет следующие действия:

  1. Инициализация переменных:
    • n и m принимают значения 3 и 4 соответственно, это размеры матрицы.
    • mas это матрица размером 30x30, инициализированная нулями.
    • i, j, x и y это счетчики, которые будут использоваться в циклы.
    • k, N, h и l это дополнительные переменные, используемые в конце программы.
  2. Ввод элементов матрицы:
    • Два вложенных цикла заполняют матрицу mas значениями, введенными пользователем.
    • Значения вводятся с помощью функции scanf_s, которая проверяет корректность ввода.
  3. Вывод матрицы:
    • Два вложенных цикла проходят по всем элементам матрицы и выводят их на экран через пробел.
  4. Подсчет строк с нулевыми элементами:
    • Внешний цикл проходит по всем строкам матрицы.
    • Внутренний цикл проверяет каждый элемент строки на равенство нулю.
    • Если элемент равен нулю, счетчик x увеличивается на 1.
  5. Поиск столбца с наибольшей серией нулей:
    • Два вложенных цикла проходят по всем элементам матрицы.
    • Если значения в текущей строке одинаковы, счетчик l увеличивается на 1.
    • Если значения в текущей строке не одинаковы, счетчик h обновляется значением l, а l сбрасывается до 0.
    • Если значение h больше текущего значения k, обновляется значение k и N, а также выводится номер столбца с наибольшей серией нулей.
  6. Вывод результата:
    • Если k не равно 0, выводится номер столбца с наибольшей серией нулей.
    • Если k равно 0, выводится сообщение Net podhodyashih stolbcov.

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


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

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

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