помогите плиз с паскале,задача на строки:
1)Как задать количество символов в строковой переменной?
2)Напишите программу шифрования текстового сообщения. Можно использовать следующий способ шифрования: шифровальщик задает ключ=3, тогда в тексте буква «а» заменяется на «г» и т. д. Используются все буквы русского алфавита. Е считается дважды.
заранее очень благодарен!!! =)
1) Просто указать в явном виде при задании переменной, например
VAR
S1:STRING[5];
S2:STRING[18];
и т.п. Если не ошибаюсь, допустимо до 255 символов.
2) Вот нарисовал:
I) Шифратор (кодировка DOS; файлы расположены на диске D: , исходный текст в файле D:\d1. Исправьте, как Вам надо):
CONST
Shift=3;
VAR
Ch:CHAR;
N:BYTE;
f,f1:TEXT;
BEGIN
Assign(f,'D:\d1');
ReSet(f);
Assign(f1,'D:\d2');
ReWrite(f1);
REPEAT
Read(f,Ch);
IF (ORD(Ch)>127) AND (ORD(Ch)<160-Shift) THEN
Write(f1, CHR(ORD(Ch)+Shift)) ELSE
IF (ORD(Ch)>159-Shift) AND (ORD(Ch)<160) THEN
Write(f1, CHR(ORD(Ch)-32+Shift)) ELSE
IF (ORD(Ch)>159) AND (ORD(Ch)<176-Shift) THEN
Write(f1, CHR(ORD(Ch)+Shift)) ELSE
IF (ORD(Ch)>175-Shift) AND (ORD(Ch)<176) THEN
Write(f1, CHR(ORD(Ch)+48+Shift)) ELSE
IF (ORD(Ch)>223) AND (ORD(Ch)<240-Shift) THEN
Write(f1, CHR(ORD(Ch)+Shift)) ELSE
IF (ORD(Ch)>239-Shift) AND (ORD(Ch)<240) THEN
Write(f1, CHR(ORD(Ch)-80+Shift)) ELSE
Write(f1,Ch);
UNTIL EoF(f);
Close(f);
Close(f1);
END.
II) Дешифратор:
CONST
Shift=3;
VAR
Ch:CHAR;
N:BYTE;
f,f1:TEXT;
BEGIN
Assign(f,'D:\d2');
ReSet(f);
Assign(f1,'D:\d3');
ReWrite(f1);
REPEAT
Read(f,Ch);
IF (ORD(Ch)>127+Shift) AND (ORD(Ch)<160) THEN
Write(f1, CHR(ORD(Ch)-Shift)) ELSE
IF (ORD(Ch)>127) AND (ORD(Ch)<128+Shift) THEN
Write(f1, CHR(ORD(Ch)+32-Shift)) ELSE
IF (ORD(Ch)>159+Shift) AND (ORD(Ch)<176) THEN
Write(f1, CHR(ORD(Ch)-Shift)) ELSE
IF (ORD(Ch)>159) AND (ORD(Ch)<160+Shift) THEN
Write(f1, CHR(ORD(Ch)+80-Shift)) ELSE
IF (ORD(Ch)>223) AND (ORD(Ch)<224+Shift) THEN
Write(f1, CHR(ORD(Ch)-48-Shift)) ELSE
IF (ORD(Ch)>223+Shift) AND (ORD(Ch)<240) THEN
Write(f1, CHR(ORD(Ch)-Shift)) ELSE
Write(f1,Ch);
UNTIL EoF(f);
Close(f);
Close(f1);
END.
Но если такой вариант не годится, и подразумевается через массивы с тупым перечислением литер (вообще-то вроде так, если судить по "е дважды") - напишите.