program sujet1_29_05_2012; uses wincrt; var p,q:integer; ch:string; procedure saisir; begin repeat writeln('donner p entre 2 et 10 : ');readln(p); until p in [2..10]; repeat writeln('donner q entre 2 et 10 : ');readln(q); until q in [2..10]; end; function test(ch:string):boolean; var i:integer; begin i:=0; repeat i:=i+1; until not(ch[i]in['A'..'Z'])and(not (ch[i]in[' ','.']))or(i>length(ch)) ; test:=i>length(ch); end; procedure lire; begin repeat writeln('Donner un chaine : '); readln(ch); until test(ch); end; function coder(ch:string):string; var j,i:integer; begin for i:=1 to length(ch) do begin if ch[i]in['A'..'Z'] then begin J:=ord(ch[i])-64; ch[i]:=chr((p*j+q) mod 26 +1+64); end; end; coder:=ch; end; begin saisir; lire; writeln(coder(ch)); end.