![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() текст задачи:
на вход программе подается зашифрованный текст заканчивающейся точкой (другие точки во входной информации отсутствуют). он зашифрован следующим образом: Сначала определяется количество букв в самом коротком слове, обозначив полученное число через К (словом называется непрерывная последовательность английских букв, слова друг от друга отделяются любыми другими символами). Затем заменяется каждая английская буква в тексте на букву, стоящую в английском алфавите К букв ранее (алфавит считается циклическим, то есть, перед буквой А стоит Z), другие символы остаются неизменными. Строчные буквы при этом остались строчными, а прописные прописными. Требуется написать программу которая будет расшифровывать текст мой код неверен т.к. при подаче на вход сообщения: zz aa x/. на выходе: bb cc z/ 2 Код:
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var s: string; d, i, min: integer; f: boolean; begin readln(s); //инфа на входе: zz aa x/. delete(s, pos('.',s), length(s)); min:=length(s); d:=0; //f:=false; for i:=1 to length(s) do begin if (s[i] in ['a'..'z']) or (s[i] in ['A'..'Z']) then begin d:=d+1; f:=true; end else if (min>d) and f then begin min:=d; d:=0; f:=false; end; end; for i:=1 to length(s) do if (s[i] in ['a'..'z']) or (s[i] in ['A'..'Z']) then begin s[i]:=chr(ord(s[i])+min); if ord(s[i])>ord('z') then s[i]:=chr(ord('a')+(ord(s[i])-ord('z')-1)); end; // инфа на выходе writeln(s); // bb cc z/ writeln(min); // 2 read(s); { TODO -oUser -cConsole Main : Insert code here } end. Последний раз редактировалось Red_Sam, 18.12.2010 в 21:26. |