Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2009, 15:09   #1
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
Радость Аннаграммы (TurboPascal)

Помогите, нужно написать программу которая будет принимать слово(не более 14 букв) с клавиатуры и выведет на экран через запятую этоже слово со всеми перемешанными буквами.
Например если ввести слово СОЛО то программа должна вывести 12слов:
СОЛО, ЛОСО, ОСЛО, ОЛСО, ОСОЛ, ОЛОС, СЛОО, ЛСОО, ООЛС, ООСЛ, ЛООС, СООЛ.
beemoto вне форума Ответить с цитированием
Старый 24.12.2009, 15:17   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

решение
вся тема
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 24.12.2009, 17:07   #3
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

raxp, ввожу SOLO и он пишет 24, несмотря на 2-O
в конце темы нашел вроде работающее, но на дельфи =(
если несложно, мне ненужно чтоб он считал сколько значений(одним словом, менбше кода =))
beemoto вне форума Ответить с цитированием
Старый 24.12.2009, 17:17   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

"решение" и есть в конце темы...
Цитата:
если несложно, мне ненужно чтоб он считал сколько значений(одним словом, менбше кода =))
так просто не используйте memo, он лишь для наглядности... используйте вместо него динамический строковый массив для хранения и проверки найденных комбинаций, вот и все... кол-во значений просто не считайте или не выводите.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 24.12.2009, 18:38   #5
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

Цитата:
так просто не используйте memo
таак мне не дельфи нужен а турбопаскаль
beemoto вне форума Ответить с цитированием
Старый 24.12.2009, 18:46   #6
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

я нашел очень хороший код и мелкий, вот только он повторяет, если есть повторные буквы...
Код:
procedure change(s,new:string);
var
t1,t2:string;
i:byte;
begin
t1 := s; t2 := new;
if (length(t1) > 1) then
for i:=1 to length(t1) do begin
t2 := t2 + t1[i];
delete(t1,pos(t1[i],t1),1);
change(t1,t2);
t1 := s; t2 := new;
end
else
writeln(t2,t1);
end;

var
s,new:string;
begin
new := '';
readln(s);
change(s,new);
readln;
end.
beemoto вне форума Ответить с цитированием
Старый 24.12.2009, 18:49   #7
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Сгенерируйте все перестановки букв, потом отсортируйте лексикографически и выводите все те, которые не совпадают с предидущими в списке отсортированных (чтоб избежать повторений) - я бы именно так делал. Хотя 14 букв - это чуть многовато.
LeBron вне форума Ответить с цитированием
Старый 24.12.2009, 19:15   #8
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

LeBron, ппц, понятно что зделать надо, но может кодиком поделишся? + обеспечен
beemoto вне форума Ответить с цитированием
Старый 24.12.2009, 20:49   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...если вы не заметили, то в указанной мной ссылке все началось именно с паскаля, а закончилось у delphi для наглядности, и единственно что вам нужно убрать из готового рабочего кода - так это исключить компонент tmemo и добавить массивчик для хранения, все остальное останется.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 24.12.2009, 21:31   #10
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от beemoto Посмотреть сообщение
LeBron, ппц, понятно что зделать надо, но может кодиком поделишся? + обеспечен
Вдумался - это не прокатит. Я бы копирнул свой АС код с одной АСМ-системы, но есть две проблемы.
Первая - та система сейчас лежит, а писать наново мне влом.
Вторая - тот код работает для 8-9 букв, можно оптимизировать для 10, но дальше уже трудновато. Для 11 букв время измеряется секундами, а дальше... Для 14 букв комбинаций столько, что памяти не хватит на все, не говорю уже о времени. Значит, надо генерить перестановки "на ходу". Для букв без повторений это вполне нормально, и так и надо делать, для повторений такое не катит. Как вариант - через комбинаторику множеств прописывать и юзать наложение перестановок.
Но над этим надо бы поработать достаточно долго, реализация сложновата.
Вопрос - где такое задали? Школа, универ, соревнования?
В последнее не верю, так как на олимпиаде турбо паскаля быть не может.
В ином случае - как кто-то будет проверять работоспособность проги? Вернее, правильность решения. Для 14 букв вывод будет мотать екран за екраном в мигающем режиме длительное время.
Ну а файл потом открыть из-за размера трудновато будет "простому смертному".
LeBron вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi--> TurboPascal Анюта) Помощь студентам 3 17.12.2009 09:11
TurboPascal - help! Lexone Помощь студентам 5 29.03.2009 15:38
Помогите по TurboPascal Vetal07 Помощь студентам 3 11.11.2008 18:51