
Вопрос задан 01.08.2023 в 04:22.
Предмет Информатика.
Спрашивает Паскарь Катя.
Решите задачи в Паскале, пожалуйста. 1)Дан массив, отсортировать все его элементы до
максимального по возрастанию. 2)Дан массив, отсортировать все его элементы от минимального по возрастанию. 3)Дан массив, отсортировать все его элементы от максимального до минимального по убыванию. МЕТОДОМ ПУЗЫРЬКА

Ответы на вопрос

Отвечает Жукова Рина.
1.
const n=20;
var
a:array[1..n] of integer;
max,imax,i,j,t:integer;
begin
Randomize;
Writeln('Исходный массив:');
for i:=1 to n do begin
a[i]:=Random(51)-25;
Write(a[i],' ')
end;
Writeln;
max:=a[1]; imax:=1;
for i:=2 to n do
if a[i]>max then begin max:=a[i]; imax:=i; end;
writeln('max = ',max);
for i:=1 to imax-1 do
for j:=1 to imax-i do
if a[j]>a[j+1] then
begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Пример:
Исходный массив:
-5 -17 -19 4 -10 16 21 -23 22 24 -5 19 11 -24 6 -25 13 3 9 0
max = 24
Отсортированный массив:
-23 -19 -17 -10 -5 4 16 21 22 24 -5 19 11 -24 6 -25 13 3 9 0
2.
const n=20;
var
a:array[1..n] of integer;
min,imin,i,j,t:integer;
begin
Randomize;
Writeln('Исходный массив:');
for i:=1 to n do begin
a[i]:=Random(51)-25;
Write(a[i],' ');
end;
Writeln;
min:=a[1]; imin:=1;
for i:=2 to n do
if a[i]<min then begin min:=a[i]; imin:=i; end;
writeln('min = ',min);
for i:=1 to n-imin-1 do
for j:=imin to n-i do
if a[j]>a[j+1] then
begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Пример:
Исходный массив:
3 -24 -16 -9 -25 3 -25 17 -22 -3 8 2 -7 -8 -8 -24 -23 12 24 -24
min = -25
Отсортированный массив:
3 -24 -16 -9 -25 -25 -24 -24 -23 -22 -8 -8 -7 -3 2 3 8 12 17 24
3.
const n=20;
var
a:array[1..n] of integer;
max,imax,min,imin,i,j,t:integer;
begin
Randomize;
Writeln('Исходный массив:');
for i:=1 to n do begin
a[i]:=Random(51)-25;
Write(a[i],' ')
end;
Writeln;
max:=a[1]; imax:=1;
min:=a[1]; imin:=1;
for i:=2 to n do
begin
if a[i]>max then begin max:=a[i]; imax:=i; end;
if a[i]<min then begin min:=a[i]; imin:=i; end;
end;
writeln('max = ',max,' min = ',min);
if imax>imin then begin
for i:=1 to imax-imin-1 do
for j:=imin to imax-i do
if a[j]>a[j+1] then
begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end
end else begin
for i:=1 to imin-imax-1 do
for j:=imax to imin-i do
if a[j]<a[j+1] then
begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end; end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Пример:
Исходный массив:
-12 13 1 -17 -13 -10 23 5 8 -11 -9 -2 17 19 10 -5 14 10 -20 -9
max = 23 min = -20
Отсортированный массив:
-12 13 1 -17 -13 -10 23 19 17 14 10 10 8 5 -2 -5 -9 -11 -20 -9
const n=20;
var
a:array[1..n] of integer;
max,imax,i,j,t:integer;
begin
Randomize;
Writeln('Исходный массив:');
for i:=1 to n do begin
a[i]:=Random(51)-25;
Write(a[i],' ')
end;
Writeln;
max:=a[1]; imax:=1;
for i:=2 to n do
if a[i]>max then begin max:=a[i]; imax:=i; end;
writeln('max = ',max);
for i:=1 to imax-1 do
for j:=1 to imax-i do
if a[j]>a[j+1] then
begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Пример:
Исходный массив:
-5 -17 -19 4 -10 16 21 -23 22 24 -5 19 11 -24 6 -25 13 3 9 0
max = 24
Отсортированный массив:
-23 -19 -17 -10 -5 4 16 21 22 24 -5 19 11 -24 6 -25 13 3 9 0
2.
const n=20;
var
a:array[1..n] of integer;
min,imin,i,j,t:integer;
begin
Randomize;
Writeln('Исходный массив:');
for i:=1 to n do begin
a[i]:=Random(51)-25;
Write(a[i],' ');
end;
Writeln;
min:=a[1]; imin:=1;
for i:=2 to n do
if a[i]<min then begin min:=a[i]; imin:=i; end;
writeln('min = ',min);
for i:=1 to n-imin-1 do
for j:=imin to n-i do
if a[j]>a[j+1] then
begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Пример:
Исходный массив:
3 -24 -16 -9 -25 3 -25 17 -22 -3 8 2 -7 -8 -8 -24 -23 12 24 -24
min = -25
Отсортированный массив:
3 -24 -16 -9 -25 -25 -24 -24 -23 -22 -8 -8 -7 -3 2 3 8 12 17 24
3.
const n=20;
var
a:array[1..n] of integer;
max,imax,min,imin,i,j,t:integer;
begin
Randomize;
Writeln('Исходный массив:');
for i:=1 to n do begin
a[i]:=Random(51)-25;
Write(a[i],' ')
end;
Writeln;
max:=a[1]; imax:=1;
min:=a[1]; imin:=1;
for i:=2 to n do
begin
if a[i]>max then begin max:=a[i]; imax:=i; end;
if a[i]<min then begin min:=a[i]; imin:=i; end;
end;
writeln('max = ',max,' min = ',min);
if imax>imin then begin
for i:=1 to imax-imin-1 do
for j:=imin to imax-i do
if a[j]>a[j+1] then
begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end
end else begin
for i:=1 to imin-imax-1 do
for j:=imax to imin-i do
if a[j]<a[j+1] then
begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end; end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Пример:
Исходный массив:
-12 13 1 -17 -13 -10 23 5 8 -11 -9 -2 17 19 10 -5 14 10 -20 -9
max = 23 min = -20
Отсортированный массив:
-12 13 1 -17 -13 -10 23 19 17 14 10 10 8 5 -2 -5 -9 -11 -20 -9



Отвечает Евсеева Настя.
PascalABC.NET 3.3.5, сборка 1650 от 01.04.2018
Внимание! Если программа не работает, обновите версию!
procedure BubbleSort(a:array of integer;
descending:Boolean:=False; // нужна ли сортировка по невозрастанию
u:integer:=-1; // начальный индекс
v:integer:=-1); // конечный индекс
// Простая пузырьковая сортировка элементов с индексами с u по v
begin
// обеспечим корректность параметров u и v
if u<0 then u:=0;
var n:=a.Length;
if (v<0) or (v>=n) then v:=n-1;
if u>v then Swap(u,v)
else if u=v then Exit;
// собственно, сортировка
if descending then begin // по невозрастанию
for var i:=v-1 downto u do
for var j:=u to i do
if a[j]<a[j+1] then Swap(a[j],a[j+1])
end
else begin
for var i:=v-1 downto u do // по неубыванию
for var j:=u to i do
if a[j]>a[j+1] then Swap(a[j],a[j+1])
end
end;
begin
Write(': ');
var a:=ArrRandom;
a.Println;
var (imin,imax):=(a.IndexMin,a.IndexMax);
var b:=Copy(a);
Write('1: '); BubbleSort(b,False,0,imax); b.Println;
b:=Copy(a);
Write('2: '); BubbleSort(b,False,imin); b.Println;
b:=Copy(a);
Write('3: '); BubbleSort(b,True,imax,imin); b.Println
end.
Пример
: 70 61 10 72 17 84 19 35 83 47
1: 10 17 61 70 72 84 19 35 83 47
2: 70 61 10 17 19 35 47 72 83 84
3: 70 61 84 72 17 10 19 35 83 47
Внимание! Если программа не работает, обновите версию!
procedure BubbleSort(a:array of integer;
descending:Boolean:=False; // нужна ли сортировка по невозрастанию
u:integer:=-1; // начальный индекс
v:integer:=-1); // конечный индекс
// Простая пузырьковая сортировка элементов с индексами с u по v
begin
// обеспечим корректность параметров u и v
if u<0 then u:=0;
var n:=a.Length;
if (v<0) or (v>=n) then v:=n-1;
if u>v then Swap(u,v)
else if u=v then Exit;
// собственно, сортировка
if descending then begin // по невозрастанию
for var i:=v-1 downto u do
for var j:=u to i do
if a[j]<a[j+1] then Swap(a[j],a[j+1])
end
else begin
for var i:=v-1 downto u do // по неубыванию
for var j:=u to i do
if a[j]>a[j+1] then Swap(a[j],a[j+1])
end
end;
begin
Write(': ');
var a:=ArrRandom;
a.Println;
var (imin,imax):=(a.IndexMin,a.IndexMax);
var b:=Copy(a);
Write('1: '); BubbleSort(b,False,0,imax); b.Println;
b:=Copy(a);
Write('2: '); BubbleSort(b,False,imin); b.Println;
b:=Copy(a);
Write('3: '); BubbleSort(b,True,imax,imin); b.Println
end.
Пример
: 70 61 10 72 17 84 19 35 83 47
1: 10 17 61 70 72 84 19 35 83 47
2: 70 61 10 17 19 35 47 72 83 84
3: 70 61 84 72 17 10 19 35 83 47



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Хорошо, вот решение задач сортировки массива методом пузырька на языке Pascal (Delphi):
- Сортировка массива по возрастанию до максимального элемента:
pascalprocedure BubbleSortToMax(var arr: array of Integer; n: Integer); var i, j, temp: Integer; begin for i := 0 to n - 2 do begin for j := 0 to n - i - 2 do begin if arr[j] > arr[j + 1] then begin temp := arr[j]; arr[j] := arr[j + 1]; arr[j + 1] := temp; end; end; end; end;
- Сортировка массива по возрастанию от минимального элемента:
pascalprocedure BubbleSortToMin(var arr: array of Integer; n: Integer); var i, j, temp: Integer; begin for i := 0 to n - 2 do begin for j := 0 to n - i - 2 do begin if arr[j] < arr[j + 1] then begin temp := arr[j]; arr[j] := arr[j + 1]; arr[j + 1] := temp; end; end; end; end;
- Сортировка массива по убыванию от максимального до минимального элемента:
pascalprocedure BubbleSortDescending(var arr: array of Integer; n: Integer); var i, j, temp: Integer; begin for i := 0 to n - 2 do begin for j := 0 to n - i - 2 do begin if arr[j] < arr[j + 1] then begin temp := arr[j]; arr[j] := arr[j + 1]; arr[j + 1] := temp; end; end; end; end;
Примечание: Для каждой задачи передайте массив и его размер (количество элементов) в соответствующую процедуру. Пример использования для первой задачи:
pascalvar arr: array of Integer; n, i: Integer; begin n := 5; // Задайте размер массива SetLength(arr, n); // Заполните массив arr элементами for i := 0 to n - 1 do begin Write('Введите элемент arr[', i, ']: '); ReadLn(arr[i]); end; BubbleSortToMax(arr, n); // Выводим отсортированный массив WriteLn('Отсортированный массив по возрастанию до максимального:'); for i := 0 to n - 1 do WriteLn(arr[i]); end.
Аналогично можно вызвать и другие процедуры для сортировки по различным критериям.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili