Обработка двумерных массивов - Free Pascal

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

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

Здравствуйте, нужна помощь. Нужно эту программу сделать с процедурами и функциями.
Program sdf;
var
A:array[1..100,1..100] of integer;
imax, imin, i, j, n, m, min, max, d:integer;
begin
write('Введите количество строк:');
readln(n);
write('Введите количество столбцов:');
readln(m);
 for i:=1 to n do
  for j:=1 to m do
  begin
  write('A[',i,',',j,']=');
  readln(A[i,j]);
  end;
writeln('Массив до обработки');
 for i:=1 to n do
  begin
  for j:=1 to m do
  write(A[i,j]:3,'  ');
  writeln
  end;
min:=A[1,1];
max:=A[1,1];
imin:=1;
imax:=1;
 for i:=1 to n do
  for j:=1 to m do
  begin
  if A[i,j]<min then
   begin
   min:=A[i,j];
   imin:=i;
   end;
  end;
 for i:=1 to n do
  for j:=1 to m do
   begin
   if A[i,j]>max then
    begin
    max:=A[i,j];
    imax:=i;
    end;
   end;
 for j:=1 to m do
  begin
  d:=A[imin,j];
  A[imin,j]:=A[imax,j];
  A[imax,j]:=d;
  end;
writeln('Массив после обработки');
 for i:=1 to n do
  begin
  for j:=1 to m do
  write(A[i,j]:3,'  ');
  writeln
  end;
end.

Решение задачи: «Обработка двумерных массивов»

textual
Листинг программы
program laba5;
 
type
  mas = array[1..100, 1..100] of integer;
 
procedure vvod(n, m: integer; var a: mas);
var
  i, j: integer;
begin
  for i := 1 to n do
    for j := 1 to m do
    begin
      write('a[', i, ',', j, ']=');
      readln(a[i, j]);
    end;
end;
 
procedure vivod(n, m: integer; const a: mas);
var
  i, j: integer;
begin
  for i := 1 to n do
  begin
    for j := 1 to m do
      write(a[i, j]:3, ' ');
    writeln
  end;
end;
 
procedure obrabotka(n, m: integer; var a: mas);
var
  i, j: integer;
  min, max, imin, imax, d: integer;
begin
  min := a[1, 1];
  max := a[1, 1];
  imin := 1;
  imax := 1;
  for i := 1 to n do
    for j := 1 to m do
    begin
      if a[i, j] < min then
      begin
        min := a[i, j];
        imin := i;
      end;
    end;
  for i := 1 to n do
    for j := 1 to m do
    begin
      if a[i, j] > max then
      begin
        max := a[i, j];
        imax := i;
      end;
    end;
  for j := 1 to m do
  begin
    d := a[imin, j];
    a[imin, j] := a[imax, j];
    a[imax, j] := d;
  end;
end;
 
var
  n, m: integer;
  a: mas;
 
 
begin
  writeln('Количество строк:');
  readln(n);
  writeln('Количество столбцов:');
  readln(m);
  vvod(n, m, a);
  writeln('Массив до обработки');
  vivod(n, m, a);
  writeln('Массив после обработки');
  obrabotka(n, m, a);
  vivod(n, m, a);
end.

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

  1. Программа начинается с объявления типа массива и трех процедур: ввода, вывода и обработки.
  2. В процедуре ввода (vvod) происходит заполнение массива значениями, которые вводятся пользователем.
  3. В процедуре вывода (vivod) происходит вывод значений массива на экран.
  4. В процедуре обработки (obrabotka) происходит поиск минимального и максимального значений в массиве, а также их индексов. Затем происходит перестановка элементов массива таким образом, чтобы на главной диагонали были максимальные значения, а на побочной - минимальные.
  5. В основной части программы пользователю предлагается ввести количество строк и столбцов массива, после чего выполняется ввод данных, вывод исходного массива, обработка и вывод обработанного массива.

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


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

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

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