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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2010, 01:01   #1
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию Шифр цезаря (не работает)

задача такая сделать шифр цезаря, сдвиг 10, алфавит лат строчные буквы, язык паскаль (тр7) вот накидал но комп выдает ошибку

Код:
Function Cesar_Crypt (s:string):string;
Const
 SizeA = 26;
 EngA = 'ABCDEFGHIKLMNOPQRSTVXYZ';
Var i, P :integer;
 Temp,Result:string;
Begin
Temp:='';
For i := 1 to length (s) do if pos (s[i], EngA)<>0 then temp:=temp+s[i];
S:=temp;
For i:=1 to length (s) do
 Begin
 P:=pos (UpCase (s[i]), EngA)+10;
 If P>SizeA then P:=P-SizeA;
 Result:=Result+EngA[P];
 End;
End;



function Cesar_DeCrypt(s:string):string;
const
  SizeA = 33;
  EngA =
var i, P :integer;
    temp:string;
begin
s:=AnsiLowerCase(s);
temp:='';

for i := 1 to length(s) do if pos(s[i],EngA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
  P:=pos(s[i],EngA)-10;
  if P<=0 then P:=P+SizeA;
  Result:=Result+EngA[P];
  end;
end;

begin

Cesar_Crypt:=result;;
end.

Последний раз редактировалось Stilet; 21.06.2010 в 09:10.
Айдар вне форума Ответить с цитированием
Старый 21.06.2010, 08:34   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

PascalABC
Код:
//Шифрование Цезаря
function Cesar_Crypt(s:string):string;
const
  SizeA = 34; //Размер алфавита
  RusA = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя '; //Алфавит
var i, P :integer;
    temp:string;
begin
Result := '';
s:=LowerCase(s);
temp:='';
//удаление символов сообщения, не входящих в наш алфавит
for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
  P:=pos(s[i],RusA)+3;
  if P>SizeA then P:=P-SizeA;
  Result:=Result+RusA[P];
  end;
end;

//Дешифрование Цезаря
function Cesar_DeCrypt(s:string):string;
const
  SizeA = 34; //Размер алфавита
  RusA = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя '; //Алфавит
var i, P :integer;
    temp:string;
begin
Result := '';
s:=LowerCase(s);
temp:='';
//удаление символов сообщения, не входящих в наш алфавит
for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
  P:=pos(s[i],RusA)-3;
  if P<=0 then P:=P+SizeA;
  Result:=Result+RusA[P];
  end;
end;

var
 aStr : String;
begin
aStr := Cesar_Crypt ( 'дом милый дом' );
writeln ( aStr );
writeln (Cesar_DeCrypt(aStr));
end.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 21.06.2010, 09:54   #3
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

у меня тут EngA[P]; выдает ошибку, не могли бы вы мне скомпилировать раб программу, с таким алфавитом EngA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
Айдар вне форума Ответить с цитированием
Старый 21.06.2010, 11:15   #4
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

В чем скомпилировать ?

Код:
//Шифрование Цезаря
function Cesar_Crypt(s:string):string;
const
  RusA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ '; //Алфавит
var i, P, SizeA :integer;
    temp:string;
begin
Result := '';
SizeA := Length(RusA); //Размер алфавита
s:=UpperCase(s);
temp:='';
//удаление символов сообщения, не входящих в наш алфавит
for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
  P:=pos(s[i],RusA)+3;
  if P>SizeA then P:=P-SizeA;
  Result:=Result+RusA[P];
  end;
end;

//Дешифрование Цезаря
function Cesar_DeCrypt(s:string):string;
const
  RusA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ '; //Алфавит
var i, P,SizeA :integer;
    temp:string;
begin
Result := '';
SizeA := Length(RusA); //Размер алфавита
s:=UpperCase(s);
temp:='';
//удаление символов сообщения, не входящих в наш алфавит
for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
  P:=pos(s[i],RusA)-3;
  if P<=0 then P:=P+SizeA;
  Result:=Result+RusA[P];
  end;
end;

var
 aStr : String;
begin
aStr := Cesar_Crypt ( 'HOUSE SWETTY HOUSE' );
writeln ( aStr );
writeln (Cesar_DeCrypt(aStr));
end.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шифр цезаря с кодовым словом и сдвигом Dark Energy Общие вопросы Delphi 0 28.05.2010 11:32
Шифр Цезаря Goracio Помощь студентам 1 19.04.2010 14:53
"Шифр Цезаря" на СИ, проблема с русским алфавитом Antowka Помощь студентам 9 30.01.2010 18:32
Шифр Цезаря Jasper92 Помощь студентам 3 02.12.2009 18:47
реализация шифрования. шифр Цезаря + Хэш-функция BlackThornGreed Помощь студентам 0 07.06.2009 10:21