program cle_cryptage;
uses wincrt;
var
chcle,msg:string;
function verif(ch:string):boolean;
var
test:boolean;
i:integer;
begin i:=0;
repeat inc(i);
test:=UPCASE(ch[i]) in ['A'..'Z',' '];
until (test=false) or (i=length(ch));
verif:=test;
end;
procedure saisie(var msg:string);
begin repeat
writeln('Donner une chaine composee de lettres et des espaces');
readln(msg);
until (verif(msg)) and (pos(' ',msg)=0) and (msg[1]<>' ') and (msg[length(msg)]<>' ' end;
function somme (a:integer):integer;
begin
while a >9 do
a:=a div 10 + a mod 10;
somme:=a;
end;
procedure cryptage (var msg:string);
var
c,e,j,i:integer;
begin
for i:=1 to length(msg) do if msg[i]<>' ' then
msg[i]:=chr(ord('A')-1+somme(ord(msg[i]))+random(18))
end;
begin
saisie(msg);
WRITELN('Message Initial : ',msg);
cryptage(msg);
WRITELN('Message Code : ',msg);
end.