Program S3;
Type
mat = array[1..5,1..5] Of char;
Var
ft : text;
mess,motcle : string;
m : mat;
//**************************************
Function verifdouble(ch:String) : boolean;
Var
ok : boolean;
i,j : integer;
c : char;
Begin
i := 1;
ok := true;
Repeat
c := ch[i];
j := 1;
Repeat
If (j<>i) And (ch[j]=c) Then
ok := false
Else
j := j+1;
Until (j>length(ch)) Or (ok=false);
i := i+1;
Until (i>length(ch)) Or (ok=false);
verifdouble := ok;
End;
//**************************************
Function verif1(ch:String) : boolean;
Var
ok1,ok2 : boolean;
i : integer;
Begin
ok1 := true;
i := 1;
While (ok1) And (i<=length(ch) ) Do
If (ch[i] In ['A'..'V','X'..'Z']) Then
i := i+1
Else
ok1 := false;
ok2 := verifdouble(ch);
verif1 := (ok1) And (ok2);
End;
//**************************************
Function verif2(ch:String) : boolean;
Var
ok : boolean;
i : integer;
Begin
ok := true;
i := 1;
While (ok) And (i<=length(ch) ) Do
If (ch[i] In ['A'..'Z',' ']) Then
i := i+1
Else
ok := false;
verif2 := ok
End;
//**************************************
Procedure affichemat(v:mat);
Var
i,j : integer;
Begin
For i:=1 To 5 Do
Begin
For j:=1 To 5 Do
write(v[i,j]:5);
writeln;
End;
End;
//**************************************
Procedure remplirM(Var M:mat;ch:String);
Var
ok : boolean;
i,j,l : integer;
c : char;
Begin
i := 0;
l := 1;
j := 0;
Repeat
i := i+1;
j := 1;
Repeat
m[i,j] := ch[l];
l := l+1;
j := j+1;
Until (l>length(ch)) Or(j>5);
Until (l>length(ch));
c := 'A' ;
Repeat
If (pos(c,ch)=0)And (c<>'W') Then
If (j<=5) Then
Begin
m[i,j] := c;
j := j+1;
End
Else
Begin
j := 1;
i := i+1;
m[i,j] := c;
j := j+1;
End;
c := succ(c);
Until (i>5);
End;
//**************************************
Function crypter(c:char;m:mat) : string;
Var
chi,chj,chcry : string;
i,j : integer;
Begin
For i:=1 To 5 Do
For j:=1 To 5 Do
If (m[i,j]=c) Then
Begin
str(i,chi);
str(j,chj);
chcry := chi+chj;
End;
crypter := chcry;
End;
//**************************************3
Procedure remplirF(Var ft:text; m:mat;mess:String);
Var
chcry,ch1 : string;
i : integer;
Begin
assign(ft,'mess_crypte.txt');
rewrite(ft);
chcry := '';
For i:=1 To length(mess) Do
If (mess[i]=' ') Then
chcry := chcry+' '
Else
Begin
ch1 := crypter(mess[i],m);
chcry := chcry+ch1;
End;
writeln(ft,chcry);
writeln(chcry);
End;
//**************************************
Begin
assign(ft,'mess_crypte.txt');
Repeat
writeln('saisir Le mot clé: ');
readln(motcle);
Until (verif1(motcle));
Repeat
writeln('saisir Le message à crypter ');
readln(mess);
Until (verif2(mess));
remplirM(M,motcle);
affichemat(m);
remplirF(ft,m,mess);
End.
Inscription à :
Publier les commentaires (Atom)