Program S8;
Var
m : string;
//********************************************
Function valide(message:String) : boolean;
Var
i : integer;
test : boolean;
Begin
i := 0;
Repeat
i := i+1;
If (message[i] In ['A'..'Z',' ']) Then
test := True
Else test := false;
Until (i>=length(message)) Or Not(test);
valide := test And (length(message) Mod 2 = 0);
End;
//********************************************
Procedure saisir(Var message:String);
Begin
Repeat
write('donner une chaine à coder :');
readln(message);
Until valide(message);
End;
//********************************************
Function crypter(message:String) : string;
Var
i,e,x1,x2,yn1,yn2 : integer;
yc1,yc2 : char;
ch,ch1,aux,mcrypte,y1,y2 : string;
Begin
mcrypte := '';
For i:=1 To length(message) Do
Begin
If i Mod 2=1 Then
Begin
ch := '(';
If message[i] In ['A'..'Z'] Then
str(ord(message[i])-65,aux)
Else aux := '26';
ch := ch+aux+',';
End;
If i Mod 2=0 Then
Begin
If message[i] In ['A'..'Z'] Then
str(ord(message[i])-65,aux)
Else aux := '26';
ch := ch+aux+')';
ch1 := '(';
val(copy(ch,2,pos(',',ch)-1),x1,e);
val(copy(ch,pos(',',ch)+1,length(ch)-
pos(',',ch)-1),x2,e);
str((((11*x1)+(3*x2)) mod 27),y1);
str((((7*x1)+(4*x2)) mod 27),y2);
ch1 := ch1+y1+','+y2+')';
If y1='26' Then
yc1 := ' '
Else
Begin
val(copy(ch1,2,pos(',',ch1)-
1),yn1,e);
yc1 := chr(yn1+65);
End;
mcrypte := mcrypte+yc1;
If y2='26' Then
yc2 := ' '
Else
Begin
val(copy(ch1,pos(',',ch1)+1,
length(ch1)-pos(',',ch1)-1),yn2,e);
yc2 := chr(yn2+65);
End;
mcrypte := mcrypte+yc2;
End;
End;
crypter := mcrypte;
End;
//********************************************
Begin
saisir(m);
writeln(crypter(m));
End.
Inscription à :
Publier les commentaires (Atom)