Вещественный массив - Free Pascal
Формулировка задачи:
Дан вещественный массив x размера n(n=10). Переставить элементы массива таким образом, чтобы вначале в массиве шла группа элементов больших первого элемента в исходном массиве, потом - группа элементов меньших или равных ему
Решение задачи: «Вещественный массив»
textual
Листинг программы
uses crt;
const n=10;
var a:array[1..n] of real;
i,k,j:integer;
x,y:real;
begin
clrscr;
randomize;
writeln('Исходный массив:');
for i:=1 to n do
begin
a[i]:=-5+random*(10);
write(a[i]:6:2);
end;
writeln;
writeln;
k:=0;
x:=a[1];
for i:=2 to n do
if a[i]>x then
begin
k:=k+1;
y:=a[i];
for j:=i downto k+1 do
a[j]:=a[j-1];
a[k]:=y;
end;
writeln('Перестановка:');
for i:=1 to n do
write(a[i]:6:2);
readln
end.
Объяснение кода листинга программы
- Объявлены переменные: n - константа, равная 10; a - вещественный массив размера n; i, k, j - целочисленные переменные для цикла; x, y - вещественные переменные для работы с массивом.
- Заполнение исходного массива случайными числами от -5 до 5 с шагом 0,1.
- Вывод исходного массива на экран.
- Инициализация счётчика k=0 и переменной x значением первого элемента массива.
- Проход по массиву с 2-го элемента до n-го. Если текущий элемент больше x, то: 5.1. Увеличение счётчика k на 1. 5.2. Значение переменной y присваивается текущему элементу массива. 5.3. Проход по массиву от элемента с индексом (k+1) до элемента с индексом k включительно. При этом элемент с индексом k присваивается значению элемента с индексом (k-1), а элемент с индексом (k+1) присваивается значению переменной y.
- Вывод переставленного массива на экран.
- Ввод символа для выхода из программы.