Консультация № 201687
14.11.2021, 18:18
0.00 руб.
0 4 2
Уважаемые эксперты! Пожалуйста, помогите! Нужно составить программу с объяснениями к каждой строчке. На языке Pascal.
Задание звучит так: "Составьте программу упорядочения (по возрастанию) элементов одномерного массива А(N), принадлежащих отрезку (O,R)."


Обсуждение

давно
Старший Модератор
31795
6196
15.11.2021, 11:14
общий
Адресаты:
Цитата: Black Widow
принадлежащих отрезку (O,R)

Уточните O,R - индексы элементов массива или сортируемые значения.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Модератор
137394
1850
15.11.2021, 16:22
общий
15.11.2021, 16:33
это ответ
Код:
const                                     { Как константы определим:}
N = 20; { количество элементов массива;}
O = -99; { начальное значение отрезка;}
R = 99; { конечное значение отрезка;}
var
A : array [1..N] of integer; { опишем массив, в который занесём исходные значения;}
i, j : Integer; { индексы массива;}
Aji : Integer; { значение элемента массива;}
maxx : Integer; { максимум для генерации случайного числа от 0<=A[i]<maxx=R-O+1;}

begin
randomize; { инициализация генератора случайных чисел;}
maxx := R-O+1; { вычисление верхней границы случайного числа;}

writeln('Исходный массив A'); { выдача заголовка для печати исходного массива;}
for i := 1 to N do begin { цикл по всем элементам массива;}
A[i] := random(maxx) + O; { занесение в массив случайного значения O<=A[i]<=R;}
write(A[i] : 4); { печать значения элемента массива;}
end;
{ Сортировка элементов массива по возрастанию;}
for i := 1 to N do begin { цикл по всем элементам массива от 1 до N;}
for j := i to N do begin { цикл по элементам массива от текущего i до N;}
{ если значение текущего элемента i больше значения эллемента массива с бОльшим номером,}
If (A[i] > A[j]) Then begin { то меняем значения местами:}
Aji := A[j]; { для чего заносим значение элемента с бОльшим номером в промежуточную переменную,}
A[j] := A[i]; { в элемент с бОльшим номером заносим значение текущего элемента;}
A[i] := Aji; { в текущий элемент массива заносим мЕньшее значение из промежуточной переменной.}
end;
end;
end;

writeln; { пропустим пустую строку чтобы отделить вывод исходного массива от отсортированного;}
writeln('Отсортированный массив A'); { выдача заголовка для печати отсортированного массива;}
for i:=1 to N do begin { цикл по всем элементам массива;}
write(A[i] : 4); { печать значения элемента массива;}
end;
writeln;
end.
В условии задачи не указан тип элементов массива, решено в целых числах, что никак не влияет на логику работы программы при необходимости модифицировать для действительных чисел.
5
Огромное спасибо! Не представляю, что бы делала без Вас!
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Посетитель
405520
4
15.11.2021, 17:05
общий
Адресаты:
Понятия не имею. Ничего не объясняли и не уточняли. Есть только само задание: "Составьте программу упорядочения (по возрастанию) элементов одномерного массива А(N), принадлежащих отрезку (O,R)." Сделайте так, как считаете нужным. Буду очень благодарна!
давно
Старший Модератор
31795
6196
16.11.2021, 12:02
общий
это ответ
Доброе время суток!
Вариант сортировки по индексам массива:
[code lang=pascal]const
n=10;{кол-во элементов}
var
a:array[1..n]of integer;{массив}
i,Aij,O,R:integer;{используемые переменные}
begin
randomize;{сброс случайного генератора}
repeat
write('Enter O[',1,'..',n-1,']:=');{просим ввести нижний индекс}
readln(O);{вводим}
until(1<=O)and(O<n);{проверяем ввод}
repeat
write('Enter R[',O+1,'..',n,']:=');{просим ввести верхний индекс}
readln(R);{вводим}
until(O<R)and(R<=n);{проверяем ввод}
writeln('before sort');{выводим массив до сортировки}
for i:=1 to n do{цикд создания и вывода массива}
begin
a[i]:=random(100);{создаем элемент массива}
write(a[i]:3);{выводим его}
end;
writeln;{переводим строку}
i:=O;{начало "ленивой" сортировки}
while i<R do{пока текущий индекс меньше верхней гранницы}
if a[i]>a[i+1] then{если больше меняем}
begin
Aij:=a[i];{запоминаем}
a[i]:=a[i+1];{меняем}
a[i+1]:=Aij;{востанавливаем}
i:=O;{в начало сортировки}
end else inc(i);{к следующему проверяемому элементу}
writeln('after sort');{выводим результат}
for i:=1 to n do{цикл вывода}
write(a[i]:3);{выводим элемент}
end.[/code]
Удачи!
5
Спасибо!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа