Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2010, 22:45   #1
Gerberka
Пользователь
 
Регистрация: 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.
Gerberka вне форума Ответить с цитированием
Старый 28.05.2010, 02:05   #2
zasqzasq
 
Регистрация: 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
zasqzasq вне форума Ответить с цитированием
Старый 04.06.2010, 14:42   #3
Gerberka
Пользователь
 
Регистрация: 05.04.2010
Сообщений: 14
По умолчанию

спасибо большое!!
Gerberka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
необходимо написать программу(в Паскале или Бэйсике)через файлы. Mariya0202 Помощь студентам 5 21.05.2010 17:36
Как передавать (и через что) файлы? TwiX Работа с сетью в Delphi 5 17.03.2010 16:30