Program Fidelite1;
Type
Tab = Array [1..30] Of String[10];
Var
TA : Tab;
N : integer;
//***************************************
Procedure Saisir (Var N : integer);
Begin
Repeat
Write('Donner le nombre des adhérants :');
readln(N);
Until N In [5..30];
End;
//***************************************
Function Verif (CH : String) : Boolean;
Var
A , M , e : integer;
Begin
Val(Copy(CH,2,4),A,e);
Val(Copy(CH,6,2),M,e);
Verif := (CH[1] In ['A','J','E']) And (A >= 2000) And (A <= 2019)
And (M In [1..12]) And (Length(CH)=10);
End;
//***************************************
Function Existe (CH : String; TA : Tab ; N : integer) : Boolean;
Var
i : integer;
b : boolean;
Begin
i := 0;
Repeat
i := i+1;
b := Copy (TA[i],8,3)=CH
Until b Or (i = N);
Existe := b;
End;
Procedure Remplir (Var TA : Tab ; N : integer);
Var
i : integer;
Begin
Repeat
Write('Donner le numéro d''adhérant N° 1 : ');
Readln(TA[1]);
Until Verif(TA[1]);
For i:=2 To N Do
Repeat
Write('Donner le numéro d''adhérent N° ',i,' : ');
readln (TA[i]);
Until Verif(TA[i]) And Not ( Existe (Copy(TA[i] , 8 , 3) , TA , i-1) );
End;
//***************************************
Procedure Bonus (TA : Tab ; N : integer);
Var
i , A , M , e , Bon : integer;
Cat : char;
Begin
Repeat
Write('Entrer une catégorie d''adhérents : ');
Readln (Cat);
Until Cat In ['A' , 'J' , 'E'];
For i:= 1 To N Do
Begin
Val(Copy(TA[i],2,4),A,e);
If (TA[i][1] = Cat) And (2019-A>=5) Then
Begin
Val (Copy(TA[i],6,2),M,e);
Bon := (2019 - A) * 12 + (5-M);
Writeln ('L''adhérent N° ',Copy(TA[i],8,3),' à gagné un Bonus de ',Bon,
' heures');
End;
End;
End;
//***************************************
Begin
Saisir (N);
Remplir (TA , N);
Bonus (TA , N);
End.
Inscription à :
Publier les commentaires (Atom)