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

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

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

Дана целочисленная прямоугольная матрица. Определить количество строк, содержащих хотя бы один нулевой элемент; номер столбца, в которой находится самая длинная серия одинаковых элементов. Нулевые строки нашел. С серией ничего не выходит(
Листинг программы
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int n = 3, m = 4, k = 0;
  5. int mas[30][30];
  6. int i, j, x = 0, y = 0;
  7. printf("Dana pryamougol'naya matrica razmernosti 3x4\n");
  8. for (int i = 0; i < n; i++)
  9. for (int j = 0; j < m; j++) {
  10. printf("Vvedite [%d;%d] element matrici : ", i + 1, j + 1);
  11. scanf_s("%d", &mas[i][j]);
  12. }
  13. for (i = 0; i < n; i++)
  14. {
  15. for (j = 0; j < m; j++)
  16. printf("%i ", mas[i][j]);
  17. printf("\n");
  18. }
  19. for (int i = 0; i < m; i++)
  20. {
  21. for (j = 0; j < n; j++)
  22. if (mas[i][j] == 0)
  23. {
  24. x++; break;
  25. }
  26. }
  27. printf("Kol-vo strok s nulevim elementom : %d \n", x);
  28.  
  29. }
  30. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int n = 3, m = 4;
  5.     int mas[30][30];
  6.     int i, j, x = 0, y = 0;
  7.     printf("Dana pryamougol'naya matrica razmernosti 3x4\n");
  8.  
  9.     for (int i = 0; i < n; i++)
  10.         for (int j = 0; j < m; j++) {
  11.             printf("Vvedite [%d;%d] element matrici : ", i + 1, j + 1);
  12.             scanf_s("%d", &mas[i][j]);
  13.         }
  14.  
  15.     for (i = 0; i < n; i++)
  16.     {
  17.         for (j = 0; j < m; j++)
  18.             printf("%i  ", mas[i][j]);
  19.         printf("\n");
  20.     }
  21.  
  22.     for (int i = 0; i < m; i++)
  23.     {
  24.         for (j = 0; j < n; j++)
  25.             if (mas[i][j] == 0)
  26.             {
  27.                 x++; break;
  28.             }
  29.     }
  30.     printf("Kol-vo strok s nulevim elementom : %d \n", x);
  31.  
  32.     int k = 0, N, h, l;
  33.     for (j = 0; j <= m; j++)
  34.     {
  35.         l = 0;
  36.         h = 0;
  37.         for (i = 0; i < n ; i++)
  38.         {
  39.             if (mas[i][j] == mas[i + 1][j])
  40.             {
  41.                 l++;
  42.             }
  43.             else
  44.             {
  45.                 h = l;
  46.                 l = 0;
  47.             }
  48.             if (h>k)
  49.             {
  50.                 k = h;
  51.                 N = j;
  52.             }
  53.         }
  54.     }
  55.     if (0 != k)
  56.     {
  57.         printf ( "Nomer stolbca s samoi dlinnoi seriei : %d ", N + 1);
  58.     }
  59.     else
  60.     {
  61.         printf (" Net podhodyashih stolbcov");
  62.     }
  63.  
  64.  
  65. }

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

Код представляет собой программу на языке 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

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

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

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