2 / 2 / 0
Регистрация: 08.01.2016
Сообщений: 42
1

Сортировка массива: сначала положительные числа по убыванию, потом отрицательные по возрастанию, потом нули

24.02.2016, 18:30. Показов 3165. Ответов 2

Заполнить массив рандомными числами от -100 включительно до 100 включительно. Отсортировать так: сначала идут положительные числа по убыванию, потом отрицательные по возрастанию, потом нули, если есть.
Пример:
Было: 20 -90 15 -34 10 0
Стало: 20 15 10 -90 -34 0
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2016, 18:30
Ответы с готовыми решениями:

Получить из массива новый в котором сначала идут положительные числа, затем нули и потом отрицательные
Дан массив Х(N). Получить новый массив Y(N), такой, что в нем сначала идут положительные числа,...

Записать в таблицу сначала все положительные числа и нули, а потом все отрицательные
Дано линейную таблицу, которая содержит 25 действительных, записать в эту же таблицу сначала все...

Во второй массив сначала переписать сначала положительные, потом 0, потом отрицательные
Не могу решить задачу, прямо застрял на ней. Помогите, пожалуйста. Нужно: заполнить массив из 10...

Преобразовать массив так, чтобы сначала были расположены все отрицательные числа и нули, а потом все положительные
Помогите пожалуста! Нада здать лабу, а зделать не могу! Задание на лабораторную работу 1....

2
5041 / 2617 / 2343
Регистрация: 10.12.2014
Сообщений: 9,971
25.02.2016, 08:08 2
Лучший ответ Сообщение было отмечено Vova25super как решение

Решение

Pascal
1
2
3
4
5
6
7
begin
  var a := ArrRandom(ReadLnInteger('n ='), -100, +100);
  var c := a.Where(i -> i < 0).Sorted;
  var d := a.Where(i -> i = 0);
  WriteLn('Массив a:', NewLine, a, NewLine, 'Отсортированный массив:', NewLine,
    a.Where(i -> i > 0).Sorted.Reverse.Concat(c).Concat(d));
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32487 / 20973 / 8115
Регистрация: 22.10.2011
Сообщений: 36,242
Записей в блоге: 7
25.02.2016, 12:56 3
Я бы сделал вот так:
Pascal
1
2
3
4
5
6
7
8
type MySort = class(IComparer<integer>)
public
  function Compare(a, b : integer) : integer := (a * b < 0 ? b - a : abs(b) - abs(a));
end;
begin
  var a := ArrRandom(ReadLnInteger('n ='), -100, +100);
  WriteLn('Массив a:', NewLine, a, NewLine, 'Отсортированный массив:', NewLine, a.OrderBy(v -> v, new MySort));
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2016, 12:56
Помогаю со студенческими работами здесь

Переставить элементы массива так, чтобы сначала шли нули, потом отрицательные, а затем положительные элементы
Дан одномерный массив, который содержит не более 60 вещественных чисел, среди которых есть...

Отсортировать массив — сначала отрицательные, потом нулевые, потом положительные
решить до завтра с объяснением всех букв) 1)отсортировать массив - сначала отрицательные, потом...

Сортировка списка: положительные по возрастанию, потом нули, потом отрицательные по убыванию
Здраствуйте. Помогите пожайлуста написать программу на swi-prolog которая сортирует список чисел....

Сортировка: сначала положительные числа по возрастанию, а потом - отрицательные тоже по возрастанию
Имеется код программы сортировки чисел. нужно чтобы сначала выводило положительные числа по...

Сортировка массива: сначала положительные по возрастанию, потом отрицательные по возрастанию
Пользователь вводит массив чисел,нужно отсортировать его методом выбора,что бы сначала шли...

Расположить элементы массива так, чтобы сначала были отрицательные и нули, а потом положительные
Дан массив из 12 элементов. Расположить элементы так,чтобы сначала были отрицательные и нули,а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru