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

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

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

Дана целочисленная прямоугольная матрица. Определить: 1) количество строк, содержащих хотя бы один нулевой элемент; 2) номер столбца, в котором находится самая длинная серия одинаковых элементов.
#include "stdafx.h"
#include <locale>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
const int M = 3;
const int N = 3;
 
int kolichestvo(int mas[M],int M)
{
    int i;
    i = 0;
    while (i < M) {
        if (mas[i] == 0)
            i = i + 1;
        return 1;
    }
    return 0;
}
 
int nomerst(int mas[M][N], int M, int N)
{
    int max = 0;
    int num = 0;
    int x = 0;
    for (int j = 0; j < N; j++)
    {
        int t = 0;
        for (int i = 0; i < M; i++)
            for (int k = i + 1; k < M; k++)
                if (mas[i][j] == mas[k][j])
                    t = t + 1;
        if (t > max)
        {
            max = t;
            num = j+1;
        }
    
    }
    return num;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int mas[M][N],i,j,n;
    int kol = 0;
    for (i = 0; i < M; i++)
    {
        for (j = 0; j < N; j++)
        {
            printf("mas[%d][%d]=", i, j);
            scanf_s("%d",&mas[i][j]);
        }
    }
    for (i= 0;i<= N; i++)
    {
        n = kolichestvo(mas[i], i);
        if (n == 1)
            kol = kol + 1;
    }
    kolichestvo(mas[i], i);
    nomerst(mas, M, N);
        printf_s("Количество строк содержащих нуль=%d\n",kol);
    printf_s("Номер столбца который содержит максимальное кол-во повторений эл-тов=%d",nomerst(mas, M, N));
    for (i = 0; i < M; i++)
    {
        printf("\n");
        for (j = 0; j < N; j++)
        {
            printf_s("%d", mas[i][j]);
            printf("  ");
        }
    }  
    getchar();
    getchar();
    return 0;
}
у меня не получается найти количество строк содержащих хотя бы один нулевой элемент

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

textual
Листинг программы
int flag = 0, kol = 0;
for(i = 0; i < M; i++){
    for(j = 0; j < N; j++){
        if(mas[i][j] == 0)
            flag = 1;
    }
    if(flag)
        kol++;
    flag = 0;
}

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

  1. Объявлены две переменные: флаг и kol. Значение флага установлено в 0, а kol - в 0.
  2. Начинается внешний цикл, который проходит по всем строкам матрицы (от i = 0 до i < M).
  3. В каждой строке происходит внутренний цикл, который проходит по всем столбцам (от j = 0 до j < N).
  4. Если элемент матрицы равен 0, то значение флага изменяется на 1.
  5. После завершения внутреннего цикла, проверяется значение флага. Если оно равно 1, то значение переменной kol увеличивается на 1.
  6. Значение флага устанавливается обратно в 0, чтобы начать следующий цикл с чистым значением флага.
  7. После завершения внешнего цикла, в переменной kol будет содержаться количество строк матрицы, содержащих хотя бы один нулевой элемент.

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


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

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

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