В одномерном массиве поменяйте местами последний наименьший и первый наибольший элементы - Turbo Pascal
Формулировка задачи:
Задача: В одномерном целочисленном массиве поменяйте местами последний наименьший и первый наибольший элементы. Выведите исходный и изменённый массив, а также индексы элементов, которые менялись местами (исходный массив должен формироваться с помощью ввода их с клавиатуры).
Т.е., если ввожу массив:
22 29 8 3 4 22 15 6 3 29
должно получиться так:
22 3 8 3 4 22 15 6 29 29
2-ой и 9-ый элементы меняются местами.
Пишу такую программу:
Она работает не совсем правильно. На этапе нахождения индекса минимального программа берёт индекс первого встретившегося. Пытаюсь заставить сделать, что мне нужно дополнительным условием:
Безуспешно. Подскажите, как исправить?
Решение задачи: «В одномерном массиве поменяйте местами последний наименьший и первый наибольший элементы»
textual
Листинг программы
uses Crt;
type Tmass =array[1..20] of Real;
var a: Tmass;
i,n,imax,imin:integer;
max,min,k: Real;
begin
ClrScr;
repeat
Write('N = ');
Readln(n);
until n <=20;
for i := 1 to n do
begin
Write('A[ ', i, ' ] = ');
Readln(a[i])
end;
Writeln;
Writeln('Ishodniy massiv:');
Writeln;
for i:=1 to n do
Write(a[i]:5:1);
Writeln;
Writeln;
imax:=1; max:=a[1];
for i:=2 to n do
if a[i]>max
then
begin
max:=a[i];
imax:=i
end;
imin:=n; min:=a[n];
for i:=(n-1) downto 1 do
if a[i]<min
then
begin
min:=a[i];
imin:=i;
end;
k:=a[imin];
a[imin]:=a[imax];
a[imax]:=k;
Writeln('Konecniy massiv:');
Writeln;
for i:=1 to n do
Write(a[i]:5:1);
Writeln;
Writeln;
if imax>imin
then Writeln(imin,' i ',imax,' elementi menjajutcja mestami')
else Writeln(imax,' i ',imin,' elementi menjajutcja mestami');
ReadKey;
end.
Объяснение кода листинга программы
- Создается тип данных Tmass, который представляет собой одномерный массив из 20 элементов типа Real.
- Создается переменная a, которая представляет собой этот массив.
- Создаются три переменные: i, n и k. Переменная i используется для итерации по элементам массива, переменная n используется для определения количества элементов в массиве, а переменная k используется для обмена элементов.
- В цикле while считывается количество элементов в массиве (n).
- Для каждого i от 1 до n считывается элемент массива a[i].
- Инициализируются переменные imax и imin. Переменная imax устанавливается равной i, а переменная imin устанавливается равной n.
- В цикле от (n-1) до 1 считывается, если текущий элемент массива a[i] больше max, то обновляется max и imax, иначе ничего не происходит.
- В цикле от (n-1) до 1 считывается, если текущий элемент массива a[i] меньше min, то обновляется min и imin, иначе ничего не происходит.
- Обмениваются местами элементов с индексами imin и imax.
- Выводится окончательный результат.
- Завершается программа.