Обработка двумерных массивов - 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.
Объяснение кода листинга программы
- Программа начинается с объявления типа массива и трех процедур: ввода, вывода и обработки.
- В процедуре ввода (vvod) происходит заполнение массива значениями, которые вводятся пользователем.
- В процедуре вывода (vivod) происходит вывод значений массива на экран.
- В процедуре обработки (obrabotka) происходит поиск минимального и максимального значений в массиве, а также их индексов. Затем происходит перестановка элементов массива таким образом, чтобы на главной диагонали были максимальные значения, а на побочной - минимальные.
- В основной части программы пользователю предлагается ввести количество строк и столбцов массива, после чего выполняется ввод данных, вывод исходного массива, обработка и вывод обработанного массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д