Дан массив целочисленных матриц. Вывести матрицы, имеющие наибольшее число нулевых строк.

Решение на 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.
Перейти к верхней панели