| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Интересные и занимательные задачи по программированию > [Pascal] Дешифровка сообщений,операции со строками |
| Автор: KasMP 17.10.2006, 20: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 17.10.2006, 21:02 | ||||
KasMP, во-первых, у тебя есть опасный код:
|
| Автор: Romikgy 17.10.2006, 21:04 | ||
мой вариант , но я не проверял, и еще одно , мне непонятно что должен делать код при ошибочной комбинации? |
| Автор: Akina 18.10.2006, 19:40 | ||
Не знаю, есть ли такое в Паскале, но на Бэйсике это выглядело бы так:
|
| Автор: Romikgy 18.10.2006, 20:07 |
| в дельфи так можно в паскале имхо нет |