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