Изменить статический массив на динамический - Free Pascal

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

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

Нужно сделать так, чтобы программа была написана через динамический массив
Листинг программы
  1. Program A14_4;
  2. uses crt;
  3. const n=5;
  4. m=10;
  5. var a : array [1..n,1..m] of integer;
  6. i,j,jn,jx : byte;
  7. max,min,tm : integer;
  8. begin
  9. clrscr; randomize;jn:=1;jx:=1;
  10. writeln('Исходная матрица:');writeln;
  11. for i:=1 to n do
  12. begin
  13. for j:=1 to m do
  14. begin
  15. a[i,j]:=random(50);
  16. write(a[i,j]:3,' ');
  17. end;
  18. writeln;
  19. end;
  20. min:=a[1,1];max:=min;
  21. for i:=1 to n do
  22. for j:=1 to m do
  23. begin
  24. if a[i,j]>max then
  25. begin
  26. max:=a[i,j];jx:=j;
  27. end;
  28. if a[i,j]<min then
  29. begin
  30. min:=a[i,j];jn:=j;
  31. end;
  32. end;
  33. Writeln;
  34. Writeln('максимальное число ',max:4,' в столбце ',jx:3);
  35. Writeln('минимальное число ',min:4,' в столбце ',jn:3);
  36. if jx=jn then
  37. begin
  38. writeln('максимум и минимум в одном столбце, ничего не меняем');
  39. end
  40. else
  41. begin
  42. for i:=1 to n do
  43. begin
  44. tm:=a[i,jn];a[i,jn]:=a[i,jx];a[i,jx]:=tm;
  45. end;
  46. end;
  47. writeln;writeln('Выводим результат обмена столбцов ',jn:3,' и ',jx:3);
  48. writeln;
  49. for i:=1 to n do
  50. begin
  51. for j:=1 to m do
  52. begin
  53. write(a[i,j]:3,' ');
  54. end;
  55. writeln;
  56. end;
  57. readln;
  58. end.

Решение задачи: «Изменить статический массив на динамический»

textual
Листинг программы
  1. Program A14_4;
  2. uses crt;
  3. const n=5;
  4.       m=10;
  5. var  a          : array of array of integer;
  6.      i,j,jn,jx  : byte;
  7.      max,min,tm : integer;
  8. begin
  9.       clrscr; randomize;jn:=1;jx:=1;
  10.       writeln('Исходная матрица:');writeln;
  11.       setlength(a, n, m);
  12.       for i:=0 to pred(n) do
  13.        begin
  14.         for j:=0 to pred(m) do
  15.          begin
  16.           a[i,j]:=random(50);
  17.           write(a[i,j]:3,'  ');
  18.          end;
  19.         writeln;
  20.        end;
  21.       min:=a[0,0];max:=min;
  22.       for i:=0 to pred(n) do
  23.         for j:=0 to pred(m) do
  24.          begin
  25.           if a[i,j]>max then
  26.            begin
  27.             max:=a[i,j];jx:=j;
  28.            end;
  29.           if a[i,j]<min then
  30.            begin
  31.             min:=a[i,j];jn:=j;
  32.            end;
  33.          end;
  34.       Writeln;
  35.       Writeln('максимальное число ',max:4,' в столбце ',jx:3);
  36.       Writeln('минимальное число ',min:4,' в столбце ',jn:3);
  37.       if jx=jn then
  38.        begin
  39.         writeln('максимум и минимум в одном столбце, ничего не меняем');
  40.        end
  41.                else
  42.        begin
  43.         for i:=0 to pred(n) do
  44.          begin
  45.            tm:=a[i,jn];a[i,jn]:=a[i,jx];a[i,jx]:=tm;
  46.          end;
  47.        end;
  48.       writeln;writeln('Выводим результат обмена столбцов ',jn:3,' и ',jx:3);
  49.       writeln;
  50.       for i:=0 to pred(n) do
  51.        begin
  52.         for j:=0 to pred(m) do
  53.          begin
  54.           write(a[i,j]:3,'  ');
  55.          end;
  56.         writeln;
  57.        end;
  58.  setlength(a, 0, 0);
  59.  readln;
  60. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы