Информатика, вопрос задал Аноним , 8 лет назад

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

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

Ответил petyaGavrikov
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 
Новые вопросы