Program S9;
Type
tableau = array [1..100] Of string;
tab = array[1..100] Of real;
Var
TC : tableau;
TN : tab;
N : integer;
//********************************************
Procedure saisir(Var n:integer);
Begin
Repeat
write('donner le nombre de participants :');
readln(n);
Until n In [5..100];
End;
//********************************************
Function verifgov(ch:String) : boolean;
Var
i : integer;
test : boolean;
Begin
i := 0;
If ch='' Then
test := False
Else
Begin
Repeat
i := i+1;
If upcase(ch[i]) In ['A'..'Z'] Then
test := True
Else test := false;
Until Not(test) Or (i>=length(ch));
End;
verifgov := test And (length(ch)<=15);
End;
{********************************************}
Function verif(ch:String) : boolean;
Var
i : integer;
test1,test2,testotal : boolean;
Begin
i := 0;
Repeat
i := i+1;
If ch[i] In ['A'..'Z'] Then
test1 := True
Else test1 := false;
Until (i>=3) Or Not(test1);
If test1=false Then
testotal := False
Else
Begin
Repeat
i := i+1;
If ch[i] In ['0'..'9'] Then
test2 := True
Else test2 := false;
Until Not(test2) Or (i>=length(ch));
testotal := test1 And test2;
End;
verif := (length(ch)=6) And testotal;
End;
//********************************************
Function npr(TN:tab;n:integer) : integer;
Var
i,s : integer;
Begin
s := 0;
For i:=1 To n Do
Begin
If TN[i]>=10 Then
s := s+1;
End;
npr := s;
End;
//********************************************
Function ntpg(TN:tab;TC:tableau;gov:String;n:integer) : integer;
Var
ch : string;
i,j,s : integer;
Begin
s := 0;
ch := '';
For j:=1 To 3 Do
Begin
ch := ch+upcase(gov[j]);
End;
For i:=1 To n Do
Begin
If (ch=copy(TC[i],1,3)) Then
s := s+1;
End;
ntpg := s;
End;
//********************************************
Function nprg(TN:tab;TC:tableau;gov:String;n:integer) : integer;
Var
i,j,s : integer;
ch : string;
Begin
s := 0;
ch := '';
For j:=1 To 3 Do
Begin
ch := ch+upcase(gov[j]);
End;
For i:=1 To n Do
Begin
If (ch=copy(TC[i],1,3)) And (TN[i]>=10) Then
s := s+1;
End;
nprg := s;
End;
//********************************************
Procedure remplir(Var TC:tableau;Var TN:tab;n:integer);
Var
i : integer;
Begin
For i:=1 To n Do
Begin
Repeat
readln(TC[i]);
Until verif(TC[i]);
End;
For i:=1 To n Do
Begin
Repeat
readln(TN[i]);
Until (TN[i]>=0) And (TN[i]<=20);
End;
End;
//********************************************
Procedure afficher(TC:tableau;TN:tab;n:integer);
Var
TRG,TRN : real;
gov : string;
Begin
TRN := (npr(TN,n)/n)*100;
writeln('le taux de reussite national est de ',TRN:5:2,'%');
Repeat
readln(gov);
Until verifgov(gov);
TRG := ((nprg(TN,TC,gov,n)/ntpg(TN,TC,gov,n))*100);
writeln('le taux de reussite de ',gov,' est ',TRG:5:2,' %');
End;
//********************************************
Begin
saisir(n);
remplir(TC,TN,n);
afficher(TC,TN,n);
End.
Inscription à :
Publier les commentaires (Atom)