М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
ЮлияК111111
ЮлияК111111
27.05.2022 12:43 •  Информатика

Python!
Массив содержит четное количество элементов. Напишите программу, которая сортирует по возрастанию отдельно элементы первой и второй половин массива. Каждый элемент должен остаться в «своей» половине. Используйте алгоритм быстрой сортировки.
Пример:
Массив:
5 3 4 2 1 6 3 2
После сортировки:
2 3 4 5 6 3 2 1

👇
Ответ:
zhanik2017
zhanik2017
27.05.2022

//Обьявляем дополнительные переменные и главный массив, а также два дополнительных - они будут "половинками".

var

 a, b, c: array [1..100] of longint;

 i, min, n, j, t: longint;

begin

 //Читаем количество элементов в нашем массиве.

 readln(n);

 

 //Читаем массив.

 for i := 1 to n do read(a[i]);

 

 //Заполняем первую "половинку".

 for i := 1 to n div 2 do b[i] := a[i];

 

 //Заполняем вторую "половинку". Но раз это уже вторая "половинка" главного массива, то и

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

 for i := n div 2 + 1 to n do c[i - n div 2] := a[i];

 

 //Теперь отсортируем первую "половинку" методом выбора. Идея этого метода

 //основывается на том, что мы ищем минимальный среди неотсортированных элемент,

 //а затем аем его с тем, который стоит сразу после отсортированных.

 for i := 1 to (n - 1) div 2 do

 begin

   min := i;

   for j := i + 1 to n div 2 do

     if b[min] > b[j] then

       min := j;

   if min <> i then begin

     t := b[i];

     b[i] := b[min];

     b[min] := t;

   end;

 end;

 

 //Затем вторую точно также, только стоит обратить внимание на сравнения.

 //Так как надо отсортировать по убыванию, то теперь сравнение перед "swap"-ом

 //будет другим.

 for i := 1 to (n - 1) div 2 do

 begin

   min := i;

   for j := i + 1 to n div 2 do

     if c[min] < c[j] then

       min := j;

   if min <> i then begin

     t := c[i];

     c[i] := c[min];

     c[min] := t;

   end;

 end;

 

 //А теперь по очереди выводим готовые "половинки", не забывая ставить

 //пробел после вывода каждого элемента.

 for i := 1 to n div 2 do write(b[i], ' ');

 for i := 1 to n - n div 2 do write(c[i], ' ');

end.

4,5(50 оценок)
Открыть все ответы
Ответ:
Lizevette
Lizevette
27.05.2022
Vara,b,c,d,x1,x2: real;
begin
writeln('Дано уравнение вида ax^2+bx+c=0');
Writeln ('Укажи переменную "a"');
readln(a);
Writeln ('Укажи переменную "b"');
readln(b);
Writeln ('Укажи переменную "c"');
readln(c);
if a = 0
 then writeln('Не квадратное уравнение!')
 else begin
      d:= sqr(b)-4*a*c;
      if d < 0 then writeln('Нет корней')
               else begin
                    x1:= (-b+sqrt(d))/2*a;
                    x2:= (-b-sqrt(d))/2*a;
                    writeln ('X1 =',x1,'  X2 =',x2);
                    end;
      end;
end.
4,5(95 оценок)
Ответ:
Арина999111
Арина999111
27.05.2022
Const n=10; m=5;
var a:array[1..n,1..m+1] of integer;
i,j,k,sp,s:integer;
begin
Randomize;
writeln('  Результаты соревнований');
for i:=1 to n do
 begin
 s:=0;
 for j:=1 to m do
  begin
  a[i,j]:=random(50)+50;
  write(a[i,j]:4);
  s:=s+a[i,j];
  end;
  a[i,m+1]:=s;
  writeln(s:5);
 end;
write('k='); readln(k);
sp:=0;
for i:=1 to n do
 if a[i,m+1]>=k then sp:=sp+1;
writeln('sp=',sp);
end.

Пример:
  Результаты соревнований
  69  52  91  62  65  339
  70  53  96  56  97  372
  78  98  94  61  62  393
  62  86  50  58  95  351
  82  98  53  56  81  370
  75  64  56  85  54  334
  69  99  53  72  97  390
  55  75  66  59  61  316
  99  71  83  75  51  379
  91  73  53  88  79  384
k=350
sp=7
4,6(15 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ