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