![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.04.2010
Сообщений: 14
|
![]()
22) На вход программе подается строка (длиной не более 200 символов), в которой нужно зашифровать все английские слова (словом называется непрерывная последовательность английских букв, слова друга от друга отделяются любыми другими символами, длина слова не превышает 20 символов). Строка заканчивается символом #, других символов # в строке нет. Каждое слово зашифровано с помощью циклического сдвига на длину этого слова. Например, если длина слова равна K, каждая буква в слове заменяется на букву, стоящую в английском алфавите на K букв дальше (алфавит считается циклическим, то есть, за буквой Z стоит буква A). Строчные буквы при этом остаются строчными, а прописные – прописными. Символы, не являющиеся английскими буквами, не изменяются.
Требуется написать программу, которая будет выводить на экран текст зашифрованного сообщения. Например, если исходный текст был таким: Day, mice. "Year" is a mistake# то результат шифровки должен быть следующий: Gdb, qmgi. "Ciev" ku b tpzahrl# нужно сделать эту задачу через файлы, вот обычная программа var s: string; inside: boolean; i, j, k, len: integer; begin readln(s); { читаем строку } inside := False; { цикл по всем символам строки } for i:=1 to length(s) do begin { если латинская буква } if s[i] in ['a'..'z','A'..'Z'] then if inside then len := len+1 { не первая буква слова } else begin { первая буква слова } len := 1; inside := True; end else { если не латинская буква } if inside then begin { закончилось слово } inside := False; { шифруем len символов «назад» } for j:=1 to len do begin k := Ord(s[i-j]) + len; { сдвиг кода } { цикличность при выходе за границы } if s[i-j] in ['a'..'z'] then if k > Ord('z') then k := k - 26; if s[i-j] in ['A'..'Z'] then if k > Ord('Z') then k := k - 26; s[i-j] := Chr(k); { новый символ } end; end; end; { вывод результата } writeln(s); end. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Файлы данных.Типизированные файлы. | вылка | Помощь студентам | 6 | 17.05.2010 15:42 |
Файлы | dragun4ik | Помощь студентам | 1 | 01.02.2010 21:56 |
Файлы | Logan | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 01.04.2008 10:15 |
Файлы | xxxPascalxxx | Помощь студентам | 4 | 11.03.2008 00:35 |
два вредных вопроса:про асю и прикриплёные файлы файлы | steck | Свободное общение | 3 | 17.06.2007 14:53 |