Найти первый положительный элемент главной диагонали в каждом массиве - Pascal ABC

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

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

Помогите пожалуйста , со всем не бум-бум с этим Паскалем ! Заданы три двумерных массива одинаковой размерности. Организовать ввод и вывод на экран массивов с использованием процедур программиста Найти первый положительный элемент главной диагонали в каждом массиве, используя функцию программиста. В том массиве, где значение первого положительного элемента больше всего, обнулить положительный элементы главной диагонали при помощи процедуры. Заранее благодарен!!!!!

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

textual
Листинг программы
program dev9tb;
uses crt;
const n1=100;n2=100;
type matrix=array[1..n1,1..n2] of integer;
var n,m,k1,k2,k3:integer;
    a,b,c:matrix;
 
procedure RandomMatrix(var a:matrix; var n,m:integer);
var i,j:integer;
begin
for i:=1 to n do
  for j:=1 to m do
  a[i,j]:=-25+random(50);
end;
 
procedure PrintMatrix(a:matrix; n,m:integer);
var i,j:integer;
begin 
  for i:=1 to n do
  begin 
    for j:=1 to m do
    write(a[i,j]:5);
  writeln;
  end;
end;
 
function aa(a:matrix; n,m:integer):integer;
var i,j,p,k:integer;
begin
k:=0;
p:=0;
  for i:=1 to n do
  begin
    for j:=1 to m do
    begin
      if (i=j)and(a[i,j]>p) then 
        begin
        k:=1;
        p:=a[i,j];
        break;
        end;     
     end;
   if (k=1) then break;
   end;
aa:=p;
end;
 
procedure formagain(var a:matrix; n,m:integer);
var i,j,k:integer;
begin
for i:=1 to n do
begin
  for j:=1 to m do
    begin
    if (i=j) and (a[i,j]>0) then 
      begin a[i,j]:=0;k:=1;
      break;
      end;    
    end;
  if (k=1) then break;
end;
end;            
        
 
begin
randomize;
write('Введите кол-во строк матриц ');
readln(n);
write('Введите кол-во столбцов матриц ');
readln(m); 
RandomMatrix(a,n,m);
writeln('матрица А');
PrintMatrix(a,n,m);
RandomMatrix(b,n,m);
writeln('матрица B');
PrintMatrix(b,n,m);
RandomMatrix(c,n,m);
writeln('матрица C');
PrintMatrix(c,n,m);
writeln();
k1:=aa(a,n,m);
k2:=aa(b,n,m);
k3:=aa(c,n,m);
if (k1=0)and(k2=0)and(k3=0) then writeln('в матрицах нет положительных элементов на главной диагонали')
else
begin
if (k1>k2) and (k1>k3) then 
begin 
formagain(a,n,m);
writeln('изменили матрицу А: ');
PrintMatrix(a,n,m);
end;
if (k2>k1) and (k2>k3) then 
begin 
formagain(b,n,m);
writeln('изменили матрицу B: ');
PrintMatrix(b,n,m);
end;
if (k3>k1) and (k3>k2) then
begin 
formagain(c,n,m);
writeln('изменили матрицу C: ');
PrintMatrix(c,n,m);
end;
end;
end.

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

Этот код написан на языке Pascal ABC и выполняет следующие действия:

  1. Запрашивает у пользователя количество строк и столбцов матрицы.
  2. Генерирует случайные значения для каждой строки матрицы.
  3. Выводит матрицу А, Б и С.
  4. Рекурсивно ищет первый положительный элемент на главной диагонали каждой матрицы.
  5. Если такой элемент найден, то изменяет соответствующую матрицу и выводит измененную матрицу.
  6. Выводит сообщение о том, есть ли положительные элементы на главной диагонали или нет.
  7. Если положительные элементы есть, то рекурсивно вызывает функцию для поиска таких элементов в матрице, которая их обнаружила.
  8. Выводит измененную матрицу в случае, если были найдены положительные элементы. Примечание: В этом коде используется рекурсия для поиска положительных элементов на главной диагонали. Это может быть неэффективным для больших матриц, так как каждый раз выполняется полный перебор матрицы.

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

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