![]() |
|
Модераторы: Alx, Fixin |
![]()
|
|
| KasMP |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: 2 Всего: 30 |
Уже (или еще только?) третий день делаю эту олимпиаду.
Упор делается на оригинальность, нестандартность, неординарность алгоритма и т.п..
Первый раз буду делать что-то со строками... Добавлено @ 20:31 n - начальное зашифрованное сообщение; r - требуемый результат, расшифрованное сообщение; p - строка для временного хранения и анализа части строки n; j - номер символа строки n, с которого начнется копирование символов в строку p; позже - длина строки r; i - вспомогательная переменная для организации циклов и т.п.. Если присмотреться, то можно увидеть, что "0110", "000" и "010" можно отличить, проанализировав вторую и третью цифру (считая слева) (получится "11", "00", и "10" соответственно) Поэтому в строку p достаточно скопировать только вторую и третью цифры. Поэтому начальное значение j - 2 и поэтому я копирую 2 цифры. После копирования j сразу же увеличивается на 3, чтобы затем перешагнуть через 3 элемента и начать копирование снова. Но "1" шифруется не 3, а 4 цифрами, поэтому, если зашифрованным символом оказывается "1", нужно увеличить j еще на единицу. Расшифрованный символ записывается в строку r под переменным номером i. Если j превышает длину исходного сообщения n, то получается, что расшифровано все сообщения, поэтому выполнение цикла следует прекратить. Затем j присваивается значение длины строки r, и выводится строка r. Надеюсь, я понятно объяснила.
Добавлено @ 20:34 Еще можно переводить значение первых трех цифр в число и затем анализировать число. ("0110" - 11 - "0"; "000" - 0 - "1"; "010" - 10 - " "). А как бы сделали вы? |
||||
|
|||||
| volvo877 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: нет Всего: 116 |
KasMP, во-первых, у тебя есть опасный код:
|
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 2 Всего: 146 |
мой вариант , но я не проверял, и еще одно , мне непонятно что должен делать код при ошибочной комбинации? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| KasMP |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: 2 Всего: 30 |
Т.е. как? Видимо, я что-то не так понимаю: имхо если в разделе "var" сказано, что "r"- строка, то переменная "r" в любой момент должна быть готова принять 255 символов. Как правильно?
Затем, что я первый раз юзаю строки и не знала, что так можно.
Если в условии не сказано, то, получается, что это на наше усмотрение. Имхо можно сделать так:
Добавлено @ 19:27 А как можно обойтись без прямого перехода?
|
||||||||
|
|||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 2 Всего: 454 |
Не знаю, есть ли такое в Паскале, но на Бэйсике это выглядело бы так:
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 2 Всего: 146 |
в дельфи так можно в паскале имхо нет
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |