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