|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.05.2010, 22:45 | #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. |
28.05.2010, 02:05 | #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
|
04.06.2010, 14:42 | #3 |
Пользователь
Регистрация: 05.04.2010
Сообщений: 14
|
спасибо большое!!
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
необходимо написать программу(в Паскале или Бэйсике)через файлы. | Mariya0202 | Помощь студентам | 5 | 21.05.2010 17:36 |
Как передавать (и через что) файлы? | TwiX | Работа с сетью в Delphi | 5 | 17.03.2010 16:30 |