![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#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. |
![]() |
![]() |
![]() |
#2 |
Регистрация: 03.01.2010
Сообщений: 9
|
![]()
добав в вар f:text;
это сначала v assign(f,'input.txt'); reset(f); readln(f,s); close(f); // а это в конец v assign(f,'output.txt'); rewrite(f); writeln(f,s); close(f);
MoRZe
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 05.04.2010
Сообщений: 14
|
![]()
спасибо большое!!
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
необходимо написать программу(в Паскале или Бэйсике)через файлы. | Mariya0202 | Помощь студентам | 5 | 21.05.2010 17:36 |
Как передавать (и через что) файлы? | TwiX | Работа с сетью в Delphi | 5 | 17.03.2010 16:30 |