Написать процедуру, которая в заданном одномерном массиве меняет местами максимальный и первый элемент - Pascal ABC
Формулировка задачи:
Добрый день. мне нужно исправить программу(думаю процедуру замена)
{Написать процедуру, которая в заданном одномерном массиве меняет местами максимальный и первый элемент.Применить эту
процедуру к каждому столбцу заданной прямоугольной матрицы}
Решение задачи: «Написать процедуру, которая в заданном одномерном массиве меняет местами максимальный и первый элемент»
textual
Листинг программы
type mas = array[1..10] of integer;//столбец mas1 = array[1..10] of mas; //массив столбцов //procedure zamena procedure zamena(var b:mas; n,m:integer); var temp, max, nmax, i: integer; begin nmax := 1; max := b[1]; for i := 2 to n do if b[i] > max then begin max := b[i]; nmax := i end; temp:=b[1]; b[1] := b[nmax]; b[nmax] := temp; end; procedure vvod(var a: mas1; var n, m: integer); var i, j: integer; begin repeat write('Введите количество строк от 2 до 10 n='); readln(n); until n in [2..10]; repeat write('Введите количество столбцов от 2 до 10 n='); readln(m); until m in [2..10]; writeln('Введите элементы матрицы по столбцам'); for j:=1 to m do begin writeln('Столбец ',j); for i := 1 to n do begin write('a[', i, ',', j, ']='); readln(a[j][i]) end; end; end; procedure vid(a: mas1; n, m: integer; s:string); var i, j: integer; begin writeln(s); for i := 1 to n do begin for j := 1 to m do write(a[j][i]:5);//выводим транспонировано writeln; end; end; var a: mas1; m, n, j: integer; begin vvod(a, n, m); vid(a, n, m,'Исходный массив'); for j:=1 to m do zamena(a[j],n,m); vid(a, n, m,'Измененный массив'); end.
Объяснение кода листинга программы
- Создается тип данных
mas
для представления одномерного массива целых чисел. - Создается процедура
zamena
, которая принимает в качестве параметров одномерный массивb
, его размерностьn
иm
. Она выполняет следующие действия:- Инициализирует переменные
temp
,max
иnmax
со значениями по умолчанию. - Находит максимальное значение в массиве
b
, сохраняет его в переменнойmax
и запоминает индекс этого элемента в переменнойnmax
. - Заменяет местами первый элемент массива
b
и элемент с индексомnmax
. - Возвращает значение
max
.
- Инициализирует переменные
- Создается процедура
vvod
, которая принимает в качестве параметров переменнуюa
типаmas1
, переменныеn
иm
типаinteger
. Она выполняет следующие действия:- Выводит приглашение для ввода количества строк и столбцов матрицы.
- Считывает значения
n
иm
с помощью функцииreadln
. - Выводит информацию о введенных значениях
n
иm
. - Выводит приглашение для ввода элементов матрицы по столбцам.
- Считывает элементы матрицы
a
с помощью функцииreadln
.
- Создается процедура
vid
, которая принимает в качестве параметров переменнуюa
типаmas1
, переменныеn
иm
типаinteger
, а также строкуs
. Она выполняет следующие действия:- Выводит строку
s
. - Выводит элементы матрицы
a
транспонированным образом. - Выводит символ новой строки после каждого элемента.
- Выводит строку
- Создается основной блок программы, который включает в себя вызов процедур
vvod
,zamena
иvid
.- Выводит приглашение для ввода значений
n
иm
. - Выводит информацию о введенных значениях
n
иm
. - Вызывает процедуру
vvod
с передачей в нее переменныхa
,n
иm
. - Вызывает процедуру
zamena
с передачей в нее переменныхb
,n
иm
. - Вызывает процедуру
vid
с передачей в нее переменныхa
,n
иm
, а также строкиИсходный массив
. - Вызывает процедуру
vid
с передачей в нее переменныхa
,n
иm
, а также строкиИзмененный массив
. - Ожидает ввода для завершения программы.
- Выводит приглашение для ввода значений
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д