program password;
uses wincrt;
type
tab=array[1..10] of string;
var
tid,tpw:tab;
n,i:integer;
procedure saisie(var n:integer);
begin repeat
writeln('Donner n entre 2..10');
readln(n);
until n in [2..10] ; end;
function verif(ch:string):boolean;
var
j:integer;
test:boolean;
begin j:=0;
repeat inc(j);
test:=upcase(ch[j]) in ['A'..'Z','0'..'9'];
until (test=false) or (j=length(ch));
verif:=test;
end;
function unique(tid:tab;j:integer):boolean;
var
k:integer;
test:boolean;
begin k:=j;
repeat k:=k-1;
test :=tid[k]=tid[j];
until (k=1) or (test);
unique:=not(test);
end;
procedure remplir(var tid,tpw:tab; n:integer);
var
i:integer;
begin repeat
writeln('Donner l''ID 1');
readln(tid[1]);
writeln('Donner le mot de passe de l''ID ',tid[1]);
readln(tpw[1]);
until (verif(tid[1])) and (verif(tpw[1])) and (length(tpw[1])>=6);
for i:=2 to n do repeat
writeln('Donner l''ID ',i);
readln(tid[i]);
writeln('Donner le mot de passe de l''ID ',tid[i]);
readln(tpw[i]);
until (unique(tid,i)) and (verif(tid[i])) and (verif(tpw[i])) and (length(tpw[i])>=6) end;
function chercheId(id:string;tid:tab;n:integer):integer;
var
p,j:integer;
begin
p:=0;
for j:=1 to n do if tid[j]=id then p:=j;
chercheId:=p;
end;
procedure verification(tid,tpw:tab;n:integer);
var
id,pw:string;
begin repeat
writeln('Donner votre ID :');
readln(id);
writeln('Donner votre Mot de Passe :');
readln(pw);
until verif(id) and verif(pw) and (length(pw)>=6);
if (chercheId(id,tid,n)<>0) and (tpw[chercheId(id,tid,n)]=pw) then writeln(ID, ', bienvenue sur notre site')
else if chercheId(id,tid,n)=0 then
writeln('Verifiez votre Identificateur et/ou votre mot de passe')
else if (chercheId(id,tid,n)<>0) and (tpw[chercheId(id,tid,n)]<>pw) then writeln('Verifiez votre Identificateur et/ou votre mot de passe');
end;
begin saisie(n);
remplir(tid,tpw,n);
verification(tid,tpw,n);
end.