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

Напишите программу, которая сортирует отдельно элементы массива с чётными и нечётными значениями. все элементы с нечётными значениями нужно отсортировать по возрастанию, а элементы с чётными значениями – по убыванию. при этом элементы каждой из групп (как чётные, так и нечётные) должны занимать то же множество позиций в массиве, что и до сортировки. входные данные первая строка содержит размер массива n . во второй строке через пробел n чисел – элементы массива. гарантируется, что 0 < n ≤ 100000 . выходные данные программа должна вывести все элементы отсортированного массива в одну строку, разделив их пробелами.

👇
Ответ:
venzelvika
venzelvika
05.09.2022
//Весьма слабое решение, но после перерыва мне простительно, хех.
//Pascal ABC.NET v3.1 сборка 1219

Var
 ar,arOdd,arNotOdd:array of integer;
 n,i,j,k1,k2:integer;
begin
 readln(n);
 setlength(ar,n+1);
 k1:=1;
 k2:=1;
 for i:=1 to n do
 begin
  readln(ar[i]);
  if odd(i) then
   begin
    setlength(arOdd,k1);
    arOdd[k1-1]:=ar[i];
    inc(k1);
   end
   else
   begin
    setlength(arNotOdd,k2);
    arNotOdd[k2-1]:=ar[i];
    inc(k2);
   end;
  end;
 sort(arOdd);
 sort(arNotOdd);
 reverse(arNotOdd);
 k1:=0;
 k2:=0;
 i:=0;
 while i<>n do
  begin
  inc(i);
   if odd(i) then
    begin
     ar[i]:=arOdd[k1];
     inc(k1);
    end
    else
    begin
     ar[i]:=arNotOdd[k2];
     inc(k2);
    end;
  write(ar[i],' ');
  end;
end.

Пример ввода:
5
1
2
3
4
5
Пример вывода:
1 4 3 2 5 
4,4(98 оценок)
Открыть все ответы
Ответ:
kseniyvolcova
kseniyvolcova
05.09.2022
Задачи 1,2,4:
/ PascalABC.Net 3.0, сборка 1066
var
  n:BigInteger;
begin
  var s:=ReadlnString('Введите натуральное число: ');
  If BigInteger.TryParse(s,n) then begin
    var c:=ReadChar('Введите проверяемую цифру: ');
    Writeln(c, ' встречается в ',s,' ',s.Where(x->x=c).Count,' раз');
    Writeln('Максимальная цифра числа: ',s.Where(x->x=s.Max).Distinct);
    Writeln('Перевертыш: ',s.Inverse);
    end
  else Writeln('Ошибка при вводе числа')
end.

Тестовое решение:
Введите натуральное число:  355678679650768680078676985643546809678546263435
Введите проверяемую цифру:  4
4 встречается в 355678679650768680078676985643546809678546263435 4 раз
Максимальная цифра числа: [9]
Перевертыш: 534362645876908645346589676870086867056976876553

Задача 3
// PascalABC.Net 3.0, сборка 1066
begin
  var m:int64:=-1;
  var n:int64:=0;
  Writeln('Принимаются неотрицательные целые числа');
  while (n>=0) and (m<n) do begin
    m:=n;
    n:=ReadInteger('Введите число: ')
  end;
  if m>=n then Writeln('Последовательность невозрастающая')
  else Writeln('Последовательность возрастающая')
end.

Тестовое решение:
Принимаются неотрицательные целые числа
Введите число:  4
Введите число:  6
Введите число:  12
Введите число:  83
Введите число:  170
Введите число:  214
Введите число:  170
Последовательность невозрастающая
4,4(85 оценок)
Ответ:
gavrikov
gavrikov
05.09.2022
Задачи 1,2,4:
/ PascalABC.Net 3.0, сборка 1066
var
  n:BigInteger;
begin
  var s:=ReadlnString('Введите натуральное число: ');
  If BigInteger.TryParse(s,n) then begin
    var c:=ReadChar('Введите проверяемую цифру: ');
    Writeln(c, ' встречается в ',s,' ',s.Where(x->x=c).Count,' раз');
    Writeln('Максимальная цифра числа: ',s.Where(x->x=s.Max).Distinct);
    Writeln('Перевертыш: ',s.Inverse);
    end
  else Writeln('Ошибка при вводе числа')
end.

Тестовое решение:
Введите натуральное число:  355678679650768680078676985643546809678546263435
Введите проверяемую цифру:  4
4 встречается в 355678679650768680078676985643546809678546263435 4 раз
Максимальная цифра числа: [9]
Перевертыш: 534362645876908645346589676870086867056976876553

Задача 3
// PascalABC.Net 3.0, сборка 1066
begin
  var m:int64:=-1;
  var n:int64:=0;
  Writeln('Принимаются неотрицательные целые числа');
  while (n>=0) and (m<n) do begin
    m:=n;
    n:=ReadInteger('Введите число: ')
  end;
  if m>=n then Writeln('Последовательность невозрастающая')
  else Writeln('Последовательность возрастающая')
end.

Тестовое решение:
Принимаются неотрицательные целые числа
Введите число:  4
Введите число:  6
Введите число:  12
Введите число:  83
Введите число:  170
Введите число:  214
Введите число:  170
Последовательность невозрастающая
4,8(59 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ