Написать процедуру, которая в заданном одномерном массиве меняет местами максимальный и первый элемент - Pascal ABC

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

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

Добрый день. мне нужно исправить программу(думаю процедуру замена) {Написать процедуру, которая в заданном одномерном массиве меняет местами максимальный и первый элемент.Применить эту процедуру к каждому столбцу заданной прямоугольной матрицы}
Листинг программы
  1. type
  2. mas = array[1..20] of integer;mas1 = array[1..20, 1..20] of integer;
  3. var
  4. a: mas1;
  5. b: mas;
  6. m, n, i, j, max, min: integer;
  7. //procedure zamena
  8. procedure zamena(var b: mas);
  9. var
  10. temp, max, nmax, i, k: integer;
  11. begin
  12. k := b[1];max := b[1];
  13. for i := 1 to n do
  14. begin
  15. if b[i] > max then begin
  16. max := b[i];nmax := i
  17. end;
  18. end;
  19. b[1] := max;b[nmax] := k;
  20. end;
  21. procedure vvod(var a: mas1; n, m: integer);
  22. var
  23. i, j: integer;
  24. begin
  25. for i := 1 to n do
  26. for j := 1 to m do
  27. begin
  28. write('a[', i, ',', j, ']=');
  29. readln(a[i, j])
  30. end;
  31. end;
  32. procedure vid(a: mas1; n, m: integer);
  33. var
  34. i, j: integer;
  35. begin
  36. for i := 1 to n do
  37. for j := 1 to m do
  38. begin
  39. writeln(a[i, j])
  40. end;
  41. end;
  42. begin
  43. writeln('n,m=');readln(n, m);
  44. vvod(a, n, m);
  45. zamena(a);
  46. vid(a, n, m);
  47.  
  48. end.

Решение задачи: «Написать процедуру, которая в заданном одномерном массиве меняет местами максимальный и первый элемент»

textual
Листинг программы
  1. type
  2.   mas = array[1..10] of integer;//столбец
  3.   mas1 = array[1..10] of mas; //массив столбцов
  4. //procedure zamena
  5. procedure zamena(var b:mas; n,m:integer);
  6. var temp, max, nmax, i: integer;
  7. begin
  8. nmax := 1;
  9. max := b[1];
  10. for i := 2 to n do
  11. if b[i] > max then
  12.  begin
  13.   max := b[i];
  14.   nmax := i
  15.  end;
  16. temp:=b[1];
  17. b[1] := b[nmax];
  18. b[nmax] := temp;
  19. end;
  20.  
  21. procedure vvod(var a: mas1; var n, m: integer);
  22. var i, j: integer;
  23. begin
  24. repeat
  25. write('Введите количество строк от 2 до 10 n=');
  26. readln(n);
  27. until n in [2..10];
  28. repeat
  29. write('Введите количество столбцов от 2 до 10 n=');
  30. readln(m);
  31. until m in [2..10];
  32. writeln('Введите элементы матрицы по столбцам');
  33. for j:=1 to m do
  34.  begin
  35.   writeln('Столбец ',j);
  36.   for i := 1 to n do
  37.    begin
  38.     write('a[', i, ',', j, ']=');
  39.     readln(a[j][i])
  40.    end;
  41.  end;
  42. end;
  43.  
  44. procedure vid(a: mas1; n, m: integer; s:string);
  45. var i, j: integer;
  46. begin
  47. writeln(s);
  48. for i := 1 to n do
  49.  begin
  50.   for j := 1 to m do
  51.   write(a[j][i]:5);//выводим транспонировано
  52.   writeln;
  53.  end;
  54. end;
  55. var a: mas1;
  56.     m, n, j: integer;
  57. begin
  58. vvod(a, n, m);
  59. vid(a, n, m,'Исходный массив');
  60. for j:=1 to m do
  61. zamena(a[j],n,m);
  62. vid(a, n, m,'Измененный массив');
  63. end.

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

  1. Создается тип данных mas для представления одномерного массива целых чисел.
  2. Создается процедура zamena, которая принимает в качестве параметров одномерный массив b, его размерность n и m. Она выполняет следующие действия:
    • Инициализирует переменные temp, max и nmax со значениями по умолчанию.
    • Находит максимальное значение в массиве b, сохраняет его в переменной max и запоминает индекс этого элемента в переменной nmax.
    • Заменяет местами первый элемент массива b и элемент с индексом nmax.
    • Возвращает значение max.
  3. Создается процедура vvod, которая принимает в качестве параметров переменную a типа mas1, переменные n и m типа integer. Она выполняет следующие действия:
    • Выводит приглашение для ввода количества строк и столбцов матрицы.
    • Считывает значения n и m с помощью функции readln.
    • Выводит информацию о введенных значениях n и m.
    • Выводит приглашение для ввода элементов матрицы по столбцам.
    • Считывает элементы матрицы a с помощью функции readln.
  4. Создается процедура vid, которая принимает в качестве параметров переменную a типа mas1, переменные n и m типа integer, а также строку s. Она выполняет следующие действия:
    • Выводит строку s.
    • Выводит элементы матрицы a транспонированным образом.
    • Выводит символ новой строки после каждого элемента.
  5. Создается основной блок программы, который включает в себя вызов процедур vvod, zamena и vid.
    • Выводит приглашение для ввода значений n и m.
    • Выводит информацию о введенных значениях n и m.
    • Вызывает процедуру vvod с передачей в нее переменных a, n и m.
    • Вызывает процедуру zamena с передачей в нее переменных b, n и m.
    • Вызывает процедуру vid с передачей в нее переменных a, n и m, а также строки Исходный массив.
    • Вызывает процедуру vid с передачей в нее переменных a, n и m, а также строки Измененный массив.
    • Ожидает ввода для завершения программы.

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


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

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

14   голосов , оценка 3.714 из 5

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

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

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