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