Предпоследний элемент в массиве - Pascal
Формулировка задачи:
Ввести одномерный массив A, вывести его. Переставить в обратном
порядке все элементы между максимальным и предпоследним
отрицательным элементом.
Помогите, не могу найти предпоследний элемент в массиве, и как их переставить?
Решение задачи: «Предпоследний элемент в массиве»
textual
Листинг программы
const n = 10; var m : Array[1..n] Of ShortInt; i, penID, maxID : Byte; state : Boolean = False; max : ShortInt; procedure Swap(var x, y : ShortInt); var z : ShortInt; begin z := x; x := y; y := z; end; begin //заполнение и вывод начального массива Randomize; for i := 1 to n do begin m[i] := Random(19) - 9; Write(m[i]:3); end; WriteLn; WriteLn; //предпоследний отрицательный for i := n downto 1 do begin if (m[i] < 0) then if (state) then begin penID := i; break; end else state := True; end; //максимальный max := m[1]; maxID := 1; for i := 2 to n do if (max < m[i]) then begin max := m[i]; maxID := i; end; WriteLn(penID, ' ', maxID); WriteLn; if (maxID > penID) then begin i := maxID; maxID := penID; penID := i; end; for i := 1 to (penID - maxID div 2) do Swap(m[maxID+i], m[penID-i]); //вывод for i := 1 to n do Write(m[i]:3); end.
Объяснение кода листинга программы
- Объявлены переменные: n - количество элементов в массиве (10); m - массив (10 элементов); i - счётчик для циклов; penID, maxID - индексы элементов; state - флажок для поиска отрицательных чисел; max - максимальное значение в массиве;
- Определённая процедура Swap для обмена значениями двух элементов.
- Заполнение массива случайными числами от -9 до 9 и вывод на экран.
- Поиск последнего отрицательного числа (предпоследний элемент).
- Нахождение максимального значения и его индекса.
- Вывод на экран найденных значений.
- Если максимальное значение находится не на своём месте, то производится перестановка с помощью процедуры Swap.
- Вывод на экран всех элементов массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д