Преобразовать массив так, чтобы элементы, большие 1, располагались после всех остальных - Pascal ABC
Формулировка задачи:
В одномерном массиве, состоящем из n вещественных элементов, вычис
лить:
1) максимальный по модулю элемент массива; 2) сумму элементов массива, расположенных между первым и вторым положительными элементами. Преобразовать массив таким образом, чтобы элементы, большие 1, располагались после всех остальных. Упорядочить каждую часть массива по возрастанию, используя алгоритм сортировки методом прямого выбора
Решение задачи: «Преобразовать массив так, чтобы элементы, большие 1, располагались после всех остальных»
textual
Листинг программы
uses crt; const n = 10; var mas:array[1..n] of real; i,j,i1,i2,k,p,x:integer; max, sum: real; begin writeln('Исходный массив'); i1:=0; i2:=0; for i:=1 to n do begin mas[i]:=-3+6*random; write(mas[i]:6:2); if mas[i]>0 then if i1=0 then i1:=i else if i2=0 then i2:=i; end; max:=mas[1]; for i:= 2 to n do if abs(max)<abs(mas[i]) then max:= mas[i]; writeln; writeln('1) Максимальный по модулю=',max:0:2); write('2) '); if i1=0 then writeln('В массиве нет положительных чисел') else if i2=0 then writeln('В массиве нет двух положительных чисел'); sum:=0; if i2-i1>1 then for i:=i1+1 to i2-1 do sum:=sum+mas[i]; writeln('Сумма элементов между первым и вторым полжительными=',sum:0:2); k:=0; for i:=1 to n do if mas[i]<=1 then//переставим меньшие 1 вперед begin k:=k+1; sum:=mas[i]; for j:=i downto k+1 do mas[j]:=mas[j-1]; mas[k]:=sum; end; writeln('3) Перестановка больших 1 в конец'); for i:=1 to n do write(mas[i]:6:2); writeln; for i:=2 to k do for j:=1 to i-1 do if mas[i]<mas[j] then begin sum:=mas[i]; for p:=i-1 downto j do mas[p+1]:=mas[p]; mas[j]:=sum; end; for i:=k+2 to n do for j:=1 to i-1 do if mas[i]<mas[j] then begin sum:=mas[i]; for p:=i-1 downto j do mas[p+1]:=mas[p]; mas[j]:=sum; end; writeln('4) Сортировка обеих частей'); for i:=1 to n do write(mas[i]:6:2); end.