![]() |
|
Модераторы: Poseidon |
![]()
|
|
| petri |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 16.5.2011 Репутация: нет Всего: нет |
Есть целое число заранее ограниченной длины.
Как перебрать все перестановки цифр числа без использования массива и строк? |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Уточните задание. Пока звучит как минимум странно. Если под числом понимается переменная числового типа, то у нее в принципе нет цифр, а если имеется в виду текстовое представление числа, то необходимо его куда-то прочитать.
Если имеется в виду именно вторая задача о текстовом представлении числа, то вместо массивов можно использовать списки или стеки. -------------------- Mirkes |
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 3 Всего: 16 |
Наверно здесь переменная целочисленного типа. Цифры (в десятичной записи) можно получить как остаток от деления на 10 -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Абсолютно неверная постановка вопроса. Прошу прощения за резкость, но это принципиальная разница. Числа это не цифры. Число три и цифра 3 имеют между собой мало общего. Посему числовая переменная НЕ ИМЕЕТ цифр. Цифры могут быть только в записи числа. Запись бывает разная и делением на 10 получается только один вид записи из многих. -------------------- Mirkes |
|||
|
||||
| petri |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 16.5.2011 Репутация: нет Всего: нет |
Переменная типа integer. Из нее с помощью div и mod выделить цифры. |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
В этой ситуации записывайте цифры в список. Далее со списком порождайте подстановки. Техника та же, что и при работе с массивами, только вставка и удаление элемента делаются чуть иначе. По какой теме задача? Какую технику следует продемонстрировать? Есть несколько алгоритмов перечисления всех перестановок. Берете любой из них и адаптируете для работы со списком вместо массива. -------------------- Mirkes |
|||
|
||||
| petri |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 16.5.2011 Репутация: нет Всего: нет |
Я занимаюсь по задачнику, в котором эта задача относится к теме "Процедуры и функции, рекурсия. Подключение стандартных модулей.", и эта тема идет до тем Строки, Массивы и тем более динамические структуры. Поэтому я подумал, что задачу можно как-то решить, используя только циклы, процедуры и функции.
P.S. Что я думаю по задаче : чтобы перебрать все перестановки, надо каким-то образом упорядочить цифры числа, но упорядоченные типы идут по теме позже. Или автор не логичен, или таки есть какой-то алгоритм. |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Я в ступоре
Вообще говоря, для генерации перестановок нужна возможность обратиться к элементам, которые переставляются. Как то раз я решал задачу сортировки 50 значений в языке не имеющем массивов. Это возможно, но точно антипедагогично. Поскольку вы утверждаете что у вас тип Integer, а в паскале он 32 битный, то цифр не более 10. Можно пустить 10 циклов и проверяя что получена перестановка печатать значения, получая цифры числа по номеру. Но в этом подходе существует вероятность двух одинаковых цифр в числе. Кроме того число может быть меньше 10. Кстати, множествами пользоваться можно? Вообще то это напоминает извращение, но если можно пользоваться множествами и пренебречь совпадением цифр, то с помощью рекурсии эаписать можно. -------------------- Mirkes |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |