Решение на C:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int a_count; printf("Количество матриц: "); scanf("%d", &a_count); int m_count; printf("Размер матриц: "); scanf("%d", &m_count); // выделим память для массивов int *zeros = malloc(a_count * sizeof(int)), **array = malloc(a_count * sizeof(int)); memset(zeros, 0, a_count * sizeof(int)); // выделим память для каждого элемента массива int i; for (i = 0; i < a_count; i++) { array[i] = malloc(m_count * sizeof(int)); } int j, zer_max = 0; for (i = 0; i < a_count; i++) { printf("Введите элементы %d матрицы: ", i+1); for (j = 0; j < m_count; j++) { scanf("%d", &array[i][j]); if (array[i][j] == 0) { zeros[i]++; } } if (zeros[i] > zer_max) { zer_max = zeros[i]; } } if (zer_max == 0) { printf("Нет ни одной матрицы с нулём"); return 0; } printf("Матрицы с максимальным количеством нулей:\n"); for (i = 0; i < a_count; i++) { if (zeros[i] == zer_max) { for (j = 0; j < m_count; j++) { printf("%d ", array[i][j]); } printf("\n"); } } return 0; }
Решение на Pascal:
var i, j, zer_max, a_count, m_count: integer; {так как нет динамических массивов, примем максимальное значение за 1000} zeros: array [0..1000] of integer; arr: array [0..1000, 0..1000] of integer; begin write('Количество матриц: '); readln(a_count); write('Размер матриц: '); readln(m_count); zer_max := 0; for i := 0 to 1000 do zeros[i] := 0; for i := 0 to a_count-1 do begin write('Введите элементы ', i+1, ' матрицы: '); for j := 0 to m_count-1 do begin readln(arr[i][j]); if (arr[i][j] = 0) then zeros[i] := zeros[i] + 1; end; if (zeros[i] > zer_max) then zer_max := zeros[i]; end; if (zer_max = 0) then begin writeln('Нет ни одной матрицы с нулём'); exit; end; writeln('Матрицы с максимальным количеством нулей:'); for i := 0 to a_count-1 do begin if (zeros[i] = zer_max) then begin for j := 0 to m_count-1 do writeln(arr[i][j], ' '); writeln(''); end; end; end.