![]() |
|
Модераторы: bsa |
![]()
|
|
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Задача. Каждая цифра на телефоне от 2 до 9 имеет связанные с ней три буквы, как в следующей таблице.
Цифра Буква 2 A B C 3 D E F 4 G H I 5 M N O 6 P R S 7 T U V 8 X Y Z Нужно написать программу, которая для данного семизначного числа записывает в файл все возможные слова из семи букв, соответствующие этому номеру. Вот что у меня получилось.
Знаю что код корявый. Возможно ли как-нибудь избавиться от такой вложенности циклов for? И еще посоветуйте как можно улучшить код. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
на С++ вложенность довольно легко победить. достаточно каждую цифру номера представить как объект. и реализовать функцию-член, которая будет возвращать множество сгененированных подстрок текста. Пример: номер 284 ввели создался объект Number, внутри которого 3 подобъекта создалось: a1, a2, a3
Это сообщение отредактировал(а) zim22 - 8.7.2009, 08:55 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
держи идею :
P.S. код не тестировал, но по идеи ошибок быть не должно..(по крайней мере надеюсь) В общем тестируйте и подгоняйте под свои нужды, из сложного только битовые операции. Ax да, маска (0x1555) годится только для 7 значного номера. Для другого кол-ва цифр аналогично ее битовому представленнию : 0001 0101 0101 0101 (7 единичек через ноль) P.S.S. можно также оптимизировать цикл, путем исключения начальных нулевых пар, то есть началом диапозона будет уже известное нам 0х1555 Это сообщение отредактировал(а) mes - 8.7.2009, 13:20 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
предыдущий код завязан на длину ассоциативной цепочки, и наиболее подходящий для длины степени двойки.
вот немного измененный, для большей свободы действий, да и для понимания, думается, будет более легкий
Это сообщение отредактировал(а) mes - 8.7.2009, 15:01 |
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
mes, спасибо за интересные решения.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |