|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.09.2012, 11:34 | #1 | |
Регистрация: 30.09.2012
Сообщений: 9
|
Упорядочить последовательность чисел по трем условиям
Помогите решить такую задачу, я слабо представляю алгоритм ее решения. Надо составить блок-схему алгоритма, а затем написать на паскале.
Цитата:
1) Сначала в цикле упорядочить по невозрастанию первой цифры числа. 2) Потом снова просмотреть весь массив, и элементы с одинаковыми первыми цифрами упорядочить по невозрастанию суммы цифр числа. 3) Снова просмотреть весь массив, числа с одинаковыми первыми цифрами и одинаковыми суммами цифр дополнительно упорядочить по невозрастанию самого числа. На получается слишком много проходов по массиву и сравнений. Можно ли как-то оптимизировать сортировку с кучей таких условий? Все это сделать в одном цикле, например? |
|
30.09.2012, 14:40 | #2 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Конечно, нужно делать все в одном цикле. Зачем делать поэтапную сортировку? Какой смысл?
сравниваем А и В if (первые цифры не равны ) then ставим в нужном порядке else if (суммы не равны) then ставим в нужном порядке else if (числа не равны) then ставим в нужном порядке else все равно как ставить )))
Предпочитаю на "ты".
|
30.09.2012, 16:12 | #3 | ||
Регистрация: 30.09.2012
Сообщений: 9
|
Цитата:
Цитата:
Но тогда где упорядочивание при равных первых цифрах? При этом утверждение "у чисел равная первая цифра" подходит и под условие "первая цифра не возрастает", а друг за другом блоки кода в каждом ответвлении if-else выполняться не могут. То есть выполнится либо один блок, либо другой. Слабо понимаю, как твой код реализует проверку всех этих условий... А еще вот тут какая-то странная функция greater, можешь объяснить, что она делает? |
||
30.09.2012, 16:33 | #4 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Цитата:
if (первые цифры не равны ) then ставим в нужном порядке else {сюда попадаем, если первые цифры равны} if (суммы не равны) then ставим в нужном порядке else {сюда попадаем, если первые цифры равны и суммы равны} if (числа не равны) then ставим в нужном порядке else все равно как ставить ))) В коде по ссылке как раз и задается условие для перестановки 2 чисел, просто в виде логического выражения.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
|
30.09.2012, 17:49 | #5 |
Регистрация: 30.09.2012
Сообщений: 9
|
Написал вот такой код:
Код:
|
30.09.2012, 17:54 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Из бросающегося в глаза:
Код:
Да и само условие сортировки задано не до конца верно - если первые цифры не равны, то менять местами нужно только в случае, если первая цифра первого числа меньше первой цифры второго и т.д.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 30.09.2012 в 17:58. |
30.09.2012, 18:16 | #7 |
Регистрация: 30.09.2012
Сообщений: 9
|
А что не так с процедурой swap? Сейчас попробовал ею поменять местами 2 первых элемента, но ничего не произошло. Массивы что ли передаются не по указателю, и изменение значений в процедуре ничего не дает?
А, заметил, добавил var То есть код должен быть таким? Код:
Последний раз редактировалось suigintou; 30.09.2012 в 18:22. |
30.09.2012, 19:15 | #8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
30.09.2012, 19:34 | #9 | |
Регистрация: 30.09.2012
Сообщений: 9
|
Большое спасибо, вроде бы работает.
Цитата:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дана последовательность вещественных чисел. каждая пара чисел задает границы отрезка. Найти количество целых чисел на отрезках | 'studentka' | Помощь студентам | 6 | 30.11.2011 18:35 |
последовательность чисел - поиск максимума, второго после максимума значения, количество чисел равных максимуму | wasy96 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 28.09.2011 01:19 |
С\С++ Дана последовательность чисел. Найти количество различных чисел в этой последовательности | yuliyayuliya | Помощь студентам | 1 | 14.04.2011 06:30 |
Delphi. найти последовательность всех чисел от 1 до n, кроме чисел с одинаковыми цифрами | bayda06 | Помощь студентам | 7 | 01.07.2010 18:18 |
В заданном массиве чисел упорядочить элементы | dolya2007 | Общие вопросы C/C++ | 0 | 01.05.2009 02:44 |