Упорядочить часть массива - Free Pascal
Формулировка задачи:
Помогите решить задачу:
Дан массив x вещественных чисел. Получить упорядоченный по не возрастанию массив, состоящий из чисел данного массива, находящихся между предпоследним и последним отрицательным членом. Указание:проверить массив на наличие элементов между ними.
Решение задачи: «Упорядочить часть массива»
textual
Листинг программы
const n=10; type mas=array of real; var a,b:mas; i,j,k,j1,j2:integer; tmp:real; begin randomize; setlength(a,n); for i:=low(a) to high(a)do begin a[i]:=random*(-10+random(31)); write(a[i]:7:2); end; writeln; i:=high(a); k:=0; while (i>=low(a))and(k<2) do begin if a[i]<0 then begin if k=0 then j2:=i else j1:=i; inc(k) end; dec(i) end; if k<2 then writeln('нет двух отрицательных') else begin if j2-j1=1 then writeln('предпоследний и последний отрицательные рядом') else begin inc(j1); setlength(b,j2-j1); writeln('массив между предпоследним и последним отрицательными, упорядоченный по не возрастанию:'); for i:=low(b) to high(b) do begin b[i]:=a[j1];inc(j1) end; if high(b)>=0 then begin for i:=low(b) to high(b)-1 do for j:=low(b) to high(b)-i-1 do if b[j]<b[j+1] then begin tmp:=b[j];b[j]:=b[j+1];b[j+1]:=tmp end; for i:=low(b) to high(b) do write(b[i]:7:2) end end end end.
Объяснение кода листинга программы
- Объявляются константы и переменные: n=10, mas=тип массива real, a, b=массивы, i, j, k, j1, j2=целые числа, tmp=реальное число.
- Выполняется инициализация генератора случайных чисел.
- Массив a заполняется случайными числами от -10 до 10 с шагом 1.
- В цикле выводятся элементы массива a.
- Переменная i инициализируется значением high(a).
- Переменная k инициализируется значением 0.
- Цикл while выполняется до тех пор, пока i больше или равно low(a) и k меньше 2.
- Если a[i] отрицательное, то выполняется условие: если k=0, то j2=i, иначе j1=i; k увеличивается на 1.
- i уменьшается на 1.
- Если k меньше 2, то выводится сообщение
нет двух отрицательных
. - Если k=2, то выполняется условие: если j2-j1=1, то выводится сообщение
предпоследний и последний отрицательные рядом
, иначе: k увеличивается на 1; создается массив b размером j2-j1; выводится сообщениемассив между предпоследним и последним отрицательными, упорядоченный по не возрастанию:
; для каждого элемента b[i] выводится его значение. - Если high(b) больше или равно 0, то выполняется условие: для каждого элемента b[i] от low(b) до high(b)-1 выводится его значение; для каждого элемента b[i] от low(b) до high(b)-i-1 выполняется сортировка по возрастанию методом пузырька.
- Код завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д