![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
timur |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дорогие и многоуважаемые модераторы!А также другие форумчане!Пожалуйста помогите!
Задача(1): Дано: Строка s1 и ключ. Получить зашифрованную строку s2! У s2 длина равна длине s1!!! Вот программа, но она для частного случая, т.к. если k будет не 3 то тогда придется присваивать иксу не ‘а’, а другую букву! Код uses crt; var s:string; i:byte; BEGIN clrscr; write('Введите строку для шифровки: '); readln(s); for i:=1 to length(s) do else if s[i]='X' then s[i]:='A' else if s[i]='Y' then s[i]:='B' else if s[i]='Z' then s[i]:='C' else if s[i]='x' then s[i]:='a' else if s[i]='y' then s[i]:='b' else if s[i]='z' then s[i]:='c' else s[i]:=chr(ord(s[i])+3); writeln(s); readln; END. Надо учитывать, что каждой букве соответствует свое число! Например, A=65, B=66,C=67 и т.д. Задача(2): Дано: ключ и s2. Расшифровать строку s2 и получить (найти) строку s1! Задача(3): Дано: s2, ключ неизвестен( ключ находится в пределах [2;26] Расшифровать строку s2.В файле out.txt будет 26 строк, рядом со строками будет ключ! Задача(4) Дана строка s1 и плавающий ключ. Зашифровать строку s1 получить строку s2! Плавающий ключ- это ключ который не постоянен для каждой буквы! Т.е каждая буква имеет свой определенный ключ! Т.Е. надо сделать следующее: Файл shi1.dat-надо расшифровать(т.е в программе надо указать будет этот файл (или путь к нему)) Файл f3.dat-надо расшифровать(т.е в программе надо указать будет этот файл (или путь к нему)) Файл f1.dat-надо зашифровать двумя способами(это задача 1 и задача4)(т.е в программе надо указать будет этот файл (или путь к нему)) Вот я составил эти программы, но они работают неправильно!Пожалуйста исправьте ошибки! ![]() ![]() ![]() Код procedure p1; var s,s2:string; k,i:byte; begin assign(input,'f1.dat');reset(input); assign(output,'f1_out.dat');rewrite(output); readln(s);readln(k); s2:=''; for i:=1 to length(s) do begin if ord(s[i])+k<255 then s2:=s2+chr(ord(s[i])+k) else s2:=s2+chr(ord(s[i])+k-254); end; writeln(s2); close(input);close(output); end; procedure p2; var s,s2:string; k,i:byte; begin assign(input,'shi1.dat');reset(input); assign(output,'shi1_out.dat');rewrite(output); readln(s); readln(k); s2:=''; for i:=1 to length(s) do begin if ord(s[i])-k>0 then s2:=s2+chr(ord(s[i])-k) else s2:=s2+chr(ord(s[i])-k+254); end; writeln(s2); close(input);close(output); end; procedure p3; var a:array[1..26] of string; s:string; i,k:byte; begin assign(input,'f3.dat');reset(input); assign(output,'f3_out.dat');rewrite(output); readln(s); for i:=1 to 26 do a[i]:=''; for k:=1 to 26 do for i:=1 to length(s) do begin if ord(s[i])-k>0 then a[k]:=a[k]+chr(ord(s[i])-k) else a[k]:=a[k]+chr(ord(s[i])-k+254); end; for k:=1 to 26 do writeln(a[k],' ',k); close(input);close(output); end; procedure p4; var a:array[1..26] of string; b:array[1..255] of integer; code:integer; s,st:string; i,k:byte; begin assign(input,'f4.dat');reset(input); assign(output,'f4_out.dat');rewrite(output); readln(s); readln(st); k:=length(st); for i:=1 to k do val(st[i],b[i],code); st:=''; for i:=1 to k do begin if ord(s[i])+b[i]<255 then st:=st+chr(ord(s[i])+b[i]) else st:=st+chr(ord(s[i])+b[i]-254); end; writeln(st); close(input);close(output); end; BEGIN p1; p2; p3; p4; END. Всем заранее спасибо!!! |
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 23:31 |