Вывести на экран ту из матриц, в которой наибольшее число строк, содержащих одни нули - Turbo Pascal (29897)

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

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

нужно составить следующую программу Даны три матрицы.Вывести на экран ту из них,в которой наибольшее число строк,содержащих одни нули (если таких матриц несколько,вывести их все). желательно, не рандомный ввод. буду очень благодарен даже за алгоритм)

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

textual
Листинг программы
uses crt;
const nmax=10;
type mtr=array[1..nmax,1..nmax] of integer;
procedure matrix(var a:mtr;var m,n:byte;c:char);
var i,j:byte;
begin
writeln('Введите размеры матрицы ',c);
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы матрицы построчно');
for i:=1 to m do
for j:=1 to n do
 begin
  write('el[',i,',',j,']=');
  readln(a[i,j]);
 end;
clrscr;
end;
procedure print(a:mtr;m,n:byte;c:char);
var i,j:byte;
begin
writeln('Матрица ',c);
for i:=1 to m do
 begin
  for j:=1 to n do
  write(a[i,j]:5);
  writeln;
 end;
end;
function zero(a:mtr;m,n:byte):byte;
var i,j,k,z:byte;
begin
k:=0;
for i:=1 to m do
 begin
  z:=0;
  for j:=1 to n do
  if a[i,j]=0 then z:=z+1;
  if z=n then k:=k+1;
 end;
zero:=k;
end;
 
 
var a,b,c:mtr;
    ma,na,mb,nb,mc,nc,za,zb,zc,mx:byte;
begin
clrscr;
matrix(a,ma,na,'A');
matrix(b,mb,nb,'B');
matrix(c,mc,nc,'C');
writeln('Исходные матрицы:');
print(a,ma,na,'A');
za:=zero(a,ma,na);
mx:=za;
writeln('Количество строк из 0=',za);
write('Press Enter');
readln;
print(b,mb,nb,'B');
zb:=zero(b,mb,nb);
if zb>mx then mx:=zb;
writeln('Количество строк из 0=',zb);
write('Press Enter');
readln;
print(c,mc,nc,'C');
zc:=zero(c,mc,nc);
if zc>mx then mx:=zc;
writeln('Количество строк из 0=',zc);
write('Press Enter');
readln;
writeln('Матрицы в которых число строк из нолей максимально');
if za=mx then print(a,ma,na,'A');
if zb=mx then print(b,mb,nb,'B');
if zc=mx then print(c,mc,nc,'C');
readln;
end.

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

  1. В начале программы подключается библиотека crt, которая обеспечивает функции ввода-вывода.
  2. Объявляются три константы: nmax, которая определяет максимальное количество строк или столбцов в матрице (до 10), и два типа данных: mtr, который представляет собой матрицу целых чисел, и byte, который представляет собой базовый тип данных для целочисленных значений.
  3. Создается процедура matrix, которая запрашивает у пользователя размеры матрицы и затем заполняет ее элементами.
  4. Создается процедура print, которая выводит на экран матрицу.
  5. Создается функция zero, которая подсчитывает количество строк в матрице, заполненных нулями.
  6. В основной части программы создаются три переменные: a, b и c, которые представляют собой матрицы размером nmax x nmax.
  7. Запускается цикл, в котором программа поочередно выводит исходные матрицы, затем вызывает функцию zero и выводит результаты.
  8. В конце программы выводится сообщение о том, какие матрицы имеют максимальное количество строк из нулей.
  9. Если количество строк из нулей максимально в матрице a, то эта матрица выводится на экран.
  10. Если количество строк из нулей максимально в матрице b, то выводится матрица b.
  11. Если количество строк из нулей максимально в матрице c, то выводится матрица c.
  12. Программа завершается после ввода символа Enter.

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


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

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

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