Найти количество отрицательных элементов в двух матрицах - Pascal

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

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

Помогите исправить Ввести матрицы A(n1,m1), B(n2,m2). Найти количества отрицательных k1, k2 элементов в них. Если k1>k2, то периметр матрицы А заменить на k1, иначе – периметр матрицы В на k2. Матрицы отпечатать. Подпрограммы: ввод матрицы, поиск количества, замена, вывод матрицы.
program p2;
type mass=array[1..20,1..20] of integer;
var n1,m1,n2,m2,min1,min2:integer;
 a,b:mass;
procedure vvod(n:integer; m:integer; var X:mass);
 var i,j:integer;
 begin
  for i:=1 to n do
   for j:=1 to m do
    begin
     write('элемент ',i,' строки ',j,' столбца -');
     readln(X[i,j]);
    end;
 end;
procedure poisk_k(n:integer; m:integer;var a:mass; var k:integer );
 var i,j:integer;
 begin
 for i:=1 to n do
   for j:=1 to m do
    if a[i,j]<0 then
     k:=k+1;
 end;

procedure zamena(n:integer; m:integer; var x:mass; k:integer);
 var i,j:integer;
 begin
  for j:=1 to m do
   x[1,j]:=k;
   x[n,j]:=k;
   end;
    begin
     for i:=1 to n do
     x[i,m]:=k;
     x[i,1]:=k;
    end;
procedure vivod(n:integer;m:integer;var x:mass);
 var i,j:integer;
 begin
  for i:=1 to n do
   begin
    for j:=1 to m do
     write(x[i,j],'   ');
    writeln; 
   end;  
 end;
begin
 write('число строк матрицы А -');
 readln(n1);
 write('число столбцов матрицы А -');
 readln(m1); 
 write('число строк матрицы B -');
 readln(n2);
 write('число столбцов матрицы B -');
 readln(m2);
 vvod(n1,m1,a);
 vvod(n2,m2,b);
 poisk_k1(n1,m1,a,k1);
 poisk_k2(n2,m2,b,k2);
 if k1>k2 then
  zamena(n1,m1,a,k1)
  else
  zamena(n2,m2,b,k2);
 vivod(n1,m1,a);
 writeln;
 vivod(n2,m2,b);
end.

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

textual
Листинг программы
program p2;
type mass=array[1..20,1..20] of integer;
procedure vvod(var n,m:integer;var X:mass;c:char);
var i,j:integer;
begin
write('число строк матрицы ',c,' = ');
readln(n);
write('число столбцов матрицы ',c,' = ');
readln(m);
for i:=1 to n do
for j:=1 to m do
 begin
  write('элемент ',i,' строки ',j,' столбца -');
  readln(X[i,j]);
 end;
end;
procedure poisk_k(n,m:integer;a:mass; var k:integer );
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
if a[i,j]<0 then k:=k+1;
end;
procedure zamena(n,m,k:integer;var x:mass);
var i,j:integer;
begin
for j:=1 to m do
 begin
  x[1,j]:=k;
  x[n,j]:=k;
 end;
for i:=1 to n do
 begin
  x[i,m]:=k;
  x[i,1]:=k;
 end;
end;
procedure vivod(n,m:integer;x:mass;s:string);
var i,j:integer;
begin
writeln(s);
for i:=1 to n do
 begin
  for j:=1 to m do
  write(x[i,j]:4);
  writeln;
 end;
end;
var n1,m1,n2,m2,k1,k2:integer;
    a,b:mass;
begin
vvod(n1,m1,a,'A');
vvod(n2,m2,b,'B');
vivod(n1,m1,a,'Исходная матрица А');
poisk_k(n1,m1,a,k1);
vivod(n2,m2,b,'Исходная матрица В');
poisk_k(n2,m2,b,k2);
if k1>k2 then
 begin
  zamena(n1,m1,k1,a);
  vivod(n1,m1,a,'Измененная матрица А');
 end
else
 begin
  zamena(n2,m2,k2,b);
  vivod(n2,m2,b,'Измененная матрица B');
 end;
end.

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

  1. В процедуре vvod считываются данные о матрице из консоли и сохраняются в переменных n, m и X.
  2. В процедуре poisk_k происходит подсчет количества отрицательных элементов в матрице X.
  3. В процедуре zamena производится замена всех отрицательных элементов в матрице X на значение k.
  4. В процедуре vivod выводится исходная матрица A или измененная матрица B в зависимости от значения переменной k.
  5. В основной программе считываются данные о двух матрицах A и B, выполняется поиск отрицательных элементов и их замена на значение k.
  6. В конце программы выводится количество отрицательных элементов в матрице X.

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


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

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

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