Вопрос задан 01.08.2023 в 04:22. Предмет Информатика. Спрашивает Паскарь Катя.

Решите задачи в Паскале, пожалуйста. 1)Дан массив, отсортировать все его элементы до

максимального по возрастанию. 2)Дан массив, отсортировать все его элементы от минимального по возрастанию. 3)Дан массив, отсортировать все его элементы от максимального до минимального по убыванию. МЕТОДОМ ПУЗЫРЬКА
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Жукова Рина.
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 
0 0
Отвечает Евсеева Настя.
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
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Хорошо, вот решение задач сортировки массива методом пузырька на языке Pascal (Delphi):

  1. Сортировка массива по возрастанию до максимального элемента:
pascal
procedure 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;
  1. Сортировка массива по возрастанию от минимального элемента:
pascal
procedure 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;
  1. Сортировка массива по убыванию от максимального до минимального элемента:
pascal
procedure 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;

Примечание: Для каждой задачи передайте массив и его размер (количество элементов) в соответствующую процедуру. Пример использования для первой задачи:

pascal
var 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.

Аналогично можно вызвать и другие процедуры для сортировки по различным критериям.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос