Изменить статический массив на динамический - 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.

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

  1. Объявление переменных:
    • a: массив массивов целых чисел (динамический массив)
    • i, j, jn, jx: булевые переменные для управления циклом
    • max, min, tm: целочисленные переменные для хранения максимального, минимального и временного значений
    • n: количество строк в исходной матрице (константа)
    • m: количество столбцов в исходной матрице (константа)
  2. Инициализация переменных и заполнение матрицы случайными числами.
  3. Нахождение минимального и максимального значений в матрице.
  4. Поиск столбцов с минимальным и максимальным значениями и сохранение их номеров в jn и jx.
  5. Проверка, являются ли столбцы с минимальным и максимальным значениями одним и тем же. Если да, то ничего не менять.
  6. Если столбцы разные, то производится обмен значениями в этих столбцах.
  7. Вывод исходной и измененной матрицы.
  8. Освобождение памяти, выделенной под динамический массив.
  9. Ввод с клавиатуры для завершения работы программы.

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


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

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

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