Изменить статический массив на динамический - Free Pascal
Формулировка задачи:
Нужно сделать так, чтобы программа была написана через динамический массив
Program A14_4; uses crt; const n=5; m=10; var a : array [1..n,1..m] of integer; i,j,jn,jx : byte; max,min,tm : integer; begin clrscr; randomize;jn:=1;jx:=1; writeln('Исходная матрица:');writeln; for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(50); write(a[i,j]:3,' '); end; writeln; end; min:=a[1,1];max:=min; for i:=1 to n do for j:=1 to m do begin if a[i,j]>max then begin max:=a[i,j];jx:=j; end; if a[i,j]<min then begin min:=a[i,j];jn:=j; end; end; Writeln; Writeln('максимальное число ',max:4,' в столбце ',jx:3); Writeln('минимальное число ',min:4,' в столбце ',jn:3); if jx=jn then begin writeln('максимум и минимум в одном столбце, ничего не меняем'); end else begin for i:=1 to n do begin tm:=a[i,jn];a[i,jn]:=a[i,jx];a[i,jx]:=tm; end; end; writeln;writeln('Выводим результат обмена столбцов ',jn:3,' и ',jx:3); writeln; for i:=1 to n do begin for j:=1 to m do begin write(a[i,j]:3,' '); end; writeln; end; readln; end.
Решение задачи: «Изменить статический массив на динамический»
textual
Листинг программы
Program A14_4; uses crt; const n=5; m=10; var a : array of array of integer; i,j,jn,jx : byte; max,min,tm : integer; begin clrscr; randomize;jn:=1;jx:=1; writeln('Исходная матрица:');writeln; setlength(a, n, m); for i:=0 to pred(n) do begin for j:=0 to pred(m) do begin a[i,j]:=random(50); write(a[i,j]:3,' '); end; writeln; end; min:=a[0,0];max:=min; for i:=0 to pred(n) do for j:=0 to pred(m) do begin if a[i,j]>max then begin max:=a[i,j];jx:=j; end; if a[i,j]<min then begin min:=a[i,j];jn:=j; end; end; Writeln; Writeln('максимальное число ',max:4,' в столбце ',jx:3); Writeln('минимальное число ',min:4,' в столбце ',jn:3); if jx=jn then begin writeln('максимум и минимум в одном столбце, ничего не меняем'); end else begin for i:=0 to pred(n) do begin tm:=a[i,jn];a[i,jn]:=a[i,jx];a[i,jx]:=tm; end; end; writeln;writeln('Выводим результат обмена столбцов ',jn:3,' и ',jx:3); writeln; for i:=0 to pred(n) do begin for j:=0 to pred(m) do begin write(a[i,j]:3,' '); end; writeln; end; setlength(a, 0, 0); readln; end.
Объяснение кода листинга программы
- Объявление переменных:
- a: массив массивов целых чисел (динамический массив)
- i, j, jn, jx: булевые переменные для управления циклом
- max, min, tm: целочисленные переменные для хранения максимального, минимального и временного значений
- n: количество строк в исходной матрице (константа)
- m: количество столбцов в исходной матрице (константа)
- Инициализация переменных и заполнение матрицы случайными числами.
- Нахождение минимального и максимального значений в матрице.
- Поиск столбцов с минимальным и максимальным значениями и сохранение их номеров в jn и jx.
- Проверка, являются ли столбцы с минимальным и максимальным значениями одним и тем же. Если да, то ничего не менять.
- Если столбцы разные, то производится обмен значениями в этих столбцах.
- Вывод исходной и измененной матрицы.
- Освобождение памяти, выделенной под динамический массив.
- Ввод с клавиатуры для завершения работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д