Дан массив целочисленных матриц. Вывести матрицы, имеющие наибольшее число нулевых строк
1 минут
Дан массив целочисленных матриц. Вывести матрицы, имеющие наибольшее число нулевых строк.
Решение на 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;
zeros: array of integer;
arr: array of array of integer;
begin
write('Количество матриц: ');
readln(a_count);
setLength(zeros, a_count);
write('Размер матриц: ');
readln(m_count);
setLength(arr, a_count, m_count);
zer_max := 0;
for i := 0 to a_count 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
write(arr[i][j], ' ');
writeln('');
end;
end;
end.
Решение на Rust:
use std::io;
fn main() {
println!("Количество матриц: ");
let a_count = read_input_value();
println!("Размер матриц: ");
let m_count = read_input_value();
let mut array = vec![vec![0; m_count]; a_count];
let mut zeros = vec![0; a_count];
let mut zer_max: u32 = 0;
for i in 0..a_count {
println!("Введите элементы {} матрицы", i + 1);
for j in 0..m_count {
let value = read_input_value();
array[i][j] = value;
if value == 0 {
zeros[i] += 1;
}
}
if zeros[i] > zer_max {
zer_max = zeros[i];
}
}
if zer_max == 0 {
println!("Нет ни одной матрицы с нулём");
return;
}
println!("Матрицы с максимальным количеством нулей:");
for i in 0..a_count {
if zeros[i] == zer_max {
println!("{:?}", array[i]);
}
}
}
fn read_input_value() -> usize {
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Ошибка ввода");
input
.trim()
.parse()
.expect("Введите целое положительное число")
}