Program Yxl; uses crt; const n=15; var mass:array [1..n+2] of integer; i,j,temp:integer; begin writeln('*** Alphaeus is thinking... ***'); writeln('*** OK ***'); writeln(); writeln(); writeln('Программа упорядочивает массив по возрастанию '); writeln('и вставляет числа -2 и 5, не нарушая упорядоченности.'); {Создаём массив} randomize; writeln('Начальный массив: '); for i:=1 to n do begin mass[i]:=random(100)-50; write(mass[i]:4,' '); end; {Сортируем массив} for i:=1 to n-1 do for j:=i+1 to n do if mass[i]>mass[j] then begin temp:=mass[i]; mass[i]:=mass[j]; mass[j]:=temp; end; writeln; writeln('Отсортированный массив: '); for i:=1 to n do begin write(mass[i]:4,' '); end; {Добавляем к массиву числа -2 и 5 и сортируем полученный массив} mass[n+1]:=-2; mass[n+2]:=5; for i:=1 to n+1 do for j:=i+1 to n+2 do if mass[i]>mass[j] then begin temp:=mass[i]; mass[i]:=mass[j]; mass[j]:=temp; end; {Выводим итоговый массив} writeln('Упорядоченный массив: '); for i:=1 to n+2 do write(mass[i]:4,' '); end.
0 votes Thanks 1
archery
а не легче ли сортировку инкапсулировать в процедуру?
Alphaeus
Alviko, а если массив окажется неупорядоченным? Чтоб избежать ошибок, пришлось бы включать в программу проверки на упорядоченность... Проще, по-моему, посортировать массив и всё
Const n = 15; type ArrayOfInteger = array [1..n+2] of integer;
procedure ArrayOutput(A: ArrayOfInteger; a_length: integer); var i: integer; begin for i := 1 to a_length do write(A[i]:4, ' '); writeln; end;
procedure ArraySort(var A: ArrayOfInteger; a_length: integer); var i, j, temp: integer; begin for i := 1 to a_length-1 do for j := i+1 to a_length do if A[i]>A[j] then begin temp:=A[i]; A[i]:=A[j]; A[j]:=temp; end; end;
var mass:ArrayOfInteger; i:integer; begin writeln('Программа упорядочивает массив по возрастанию '); writeln('и вставляет числа -2 и 5, не нарушая упорядоченности.'); {Создаём массив} randomize; for i := 1 to n do mass[i] := random(100)-50;
ArraySort(mass, n); writeln('Отсортированный массив: '); ArrayOutput(mass, n); {Добавляем к массиву числа -2 и 5 и сортируем полученный массив} mass[n+1]:=-2; mass[n+2]:=5; ArraySort(mass, n+2); {Выводим итоговый массив} writeln('Упорядоченный массив: '); ArrayOutput(mass, n+2); end.
0 votes Thanks 0
archery
В принципе да, но не сказано что нельзя делать так как здесь. Потом паскаль весьма неудобная штука для работы с массивами.
archery
А на счет работы - так наоборот, программист делал меньше работы, значит время сэкономленно. А вообще вариант сортировки должен подбираться автоматически в зависимости от того как смешаны элементы. Но в паскале этот функционал не реализован вообще
Answers & Comments
Verified answer
Program Yxl;uses crt;
const n=15;
var
mass:array [1..n+2] of integer;
i,j,temp:integer;
begin
writeln('*** Alphaeus is thinking... ***');
writeln('*** OK ***');
writeln(); writeln();
writeln('Программа упорядочивает массив по возрастанию ');
writeln('и вставляет числа -2 и 5, не нарушая упорядоченности.');
{Создаём массив}
randomize;
writeln('Начальный массив: ');
for i:=1 to n do
begin
mass[i]:=random(100)-50;
write(mass[i]:4,' ');
end;
{Сортируем массив}
for i:=1 to n-1 do
for j:=i+1 to n do
if mass[i]>mass[j] then
begin
temp:=mass[i];
mass[i]:=mass[j];
mass[j]:=temp;
end;
writeln;
writeln('Отсортированный массив: ');
for i:=1 to n do
begin
write(mass[i]:4,' ');
end;
{Добавляем к массиву числа -2 и 5 и сортируем полученный массив}
mass[n+1]:=-2; mass[n+2]:=5;
for i:=1 to n+1 do
for j:=i+1 to n+2 do
if mass[i]>mass[j] then
begin
temp:=mass[i];
mass[i]:=mass[j];
mass[j]:=temp;
end;
{Выводим итоговый массив}
writeln('Упорядоченный массив: ');
for i:=1 to n+2 do
write(mass[i]:4,' ');
end.
Verified answer
Const n = 15;type ArrayOfInteger = array [1..n+2] of integer;
procedure ArrayOutput(A: ArrayOfInteger; a_length: integer);
var i: integer;
begin
for i := 1 to a_length do
write(A[i]:4, ' ');
writeln;
end;
procedure ArraySort(var A: ArrayOfInteger; a_length: integer);
var i, j, temp: integer;
begin
for i := 1 to a_length-1 do
for j := i+1 to a_length do
if A[i]>A[j] then begin
temp:=A[i];
A[i]:=A[j];
A[j]:=temp;
end;
end;
var
mass:ArrayOfInteger;
i:integer;
begin
writeln('Программа упорядочивает массив по возрастанию ');
writeln('и вставляет числа -2 и 5, не нарушая упорядоченности.');
{Создаём массив}
randomize;
for i := 1 to n do
mass[i] := random(100)-50;
writeln('Начальный массив: ');
ArrayOutput(mass, n);
ArraySort(mass, n);
writeln('Отсортированный массив: ');
ArrayOutput(mass, n);
{Добавляем к массиву числа -2 и 5 и сортируем полученный массив}
mass[n+1]:=-2;
mass[n+2]:=5;
ArraySort(mass, n+2);
{Выводим итоговый массив}
writeln('Упорядоченный массив: ');
ArrayOutput(mass, n+2);
end.