IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Перестановки цифр числа, генерация
сообщение
Сообщение #1


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

Репутация: -  3  +


Всем привет... Мне очень нужна ваша помощь yes2.gif . У меня тут одна задачка никак не могу решить wacko.gif . Во всех поисковиках искал norespect.gif . Пермутацию сделал а эту никак не могу mega_chok.gif
Задача такая:

Задано число(можно и прочесть в виде строки) . Требуеться вывести на экран все числа получившиеся перестановками цифр в этом числе.
Ключевые моменты:
1) если есть одинаковые цифры то вывести перестановку обоих
Например если задано 122 то надо вывести 122 122 223 232 322 322
2) если в заданном числе есть цифра 0 то вывести и ее перестановку
Например если задано число 103 то надо вывести 013 031 103 130 301 310

Помогите мне пожалуйста найти алгоритм и решение этой задачи smile.gif


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
если задано 122 то надо вывести 122 122 223 232 322 322
wacko.gif
Может, "если задано 122 то надо вывести 122 122 212 212 221 221" ?

Тогда все очень просто: завести массив индексов (в твоем случае - массив <1, 2, 3>), делать перестановки ЕГО элементов, а на печать выводить элементы исходного массива (по переставленным индексам) - тогда программе будет вообще "по барабану", что там у тебя хранится в массиве данных - хоть цифры, хоть буквы...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

Репутация: -  3  +


Ой извиняюсь за ошибочку...
Цитата
Может, "если задано 122 то надо вывести 122 122 212 212 221 221" ?

Да вы правы volvo.

Я понял алго но проблема у меня в тех ключевых случаях...

Добавлено через 1 мин.
а все теперь я понял.
Цитата
по индексам

Большое спасибо volvo. good.gif


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






В FAQ-е лежит программа: Комбинаторика для получения всех перестановок... Изменяешь в ней:

{ Глобальная переменная }
var s: string;
...
procedure output;
var i: integer;
begin
writeln;
for i:=1 to n do write(s[a[i]],' '); { <-- Добавляешь вывод по индексу }
end;

...
begin
write('Введите исходное число: '); readln(s);
n := length(s);
fillchar(a, sizeof(a), 0);
... { Все остальное - без изменений }
end.


Работает на всех перечисленных тобой случаях...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.10.2020 19:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name