IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Шифровка строк, Нужна помощь в корректировании
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Дорогие и многоуважаемые модераторы!А также другие форумчане!Пожалуйста помогите!

Задача(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)(т.е в программе надо указать будет этот файл (или путь к нему))

Вот я составил эти программы, но они работают неправильно!Пожалуйста исправьте ошибки! sad.gif sad.gif sad.gif
Код
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.

Всем заранее спасибо!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.09.2025 1:49
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name