![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |