Написать процедуру, которая в заданном одномерном массиве меняет местами максимальный и первый элемент - Pascal ABC
Формулировка задачи:
Добрый день. мне нужно исправить программу(думаю процедуру замена)
{Написать процедуру, которая в заданном одномерном массиве меняет местами максимальный и первый элемент.Применить эту
процедуру к каждому столбцу заданной прямоугольной матрицы}
Листинг программы
- type
- mas = array[1..20] of integer;mas1 = array[1..20, 1..20] of integer;
- var
- a: mas1;
- b: mas;
- m, n, i, j, max, min: integer;
- //procedure zamena
- procedure zamena(var b: mas);
- var
- temp, max, nmax, i, k: integer;
- begin
- k := b[1];max := b[1];
- for i := 1 to n do
- begin
- if b[i] > max then begin
- max := b[i];nmax := i
- end;
- end;
- b[1] := max;b[nmax] := k;
- end;
- procedure vvod(var a: mas1; n, m: integer);
- var
- i, j: integer;
- begin
- for i := 1 to n do
- for j := 1 to m do
- begin
- write('a[', i, ',', j, ']=');
- readln(a[i, j])
- end;
- end;
- procedure vid(a: mas1; n, m: integer);
- var
- i, j: integer;
- begin
- for i := 1 to n do
- for j := 1 to m do
- begin
- writeln(a[i, j])
- end;
- end;
- begin
- writeln('n,m=');readln(n, m);
- vvod(a, n, m);
- zamena(a);
- vid(a, n, m);
- end.
Решение задачи: «Написать процедуру, которая в заданном одномерном массиве меняет местами максимальный и первый элемент»
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
, а также строкиИзмененный массив
. - Ожидает ввода для завершения программы.
- Выводит приглашение для ввода значений
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д