bac2005: clé d'employés

Aller en bas

bac2005: clé d'employés

Message  Admin le Ven 29 Avr - 20:15

ÉNONCÉ
Le matricule d'un employé dans une entreprise est composée de trois parties définies comme suit:
Un entier donné de 4 chiffres, représentant le numéro d'ordre de l'employé.
Un séparateur "-"
Une clé calculée selon le principe suivant : si le numéro d'ordre de l'employé n'est pas
divisible par 97, la clé sera égale au reste de la division entière de ce numéro d'ordre par 97,
sinon la clé sera égale à 97.

Exemple :
Nom M. Hamdi / S. Fourati / R. Snoussi / M. Seddik
Numéro d'ordre 1574 / 2570 / 2619 / 1854
Le programme affichera les noms et les matricules sous la forme suivante :
M. Hamdi a pour matricule 1574-22
S. Fourati a pour matricule 2570-48
R. Snoussi a pour matricule 2619-97
M. Seddik a pour matricule 1854-11
Question :
Ecrire un programme en Turbo Pascal, permettant de saisir les noms et les numéros d'ordre de N
employés dans deux tableaux Tnoms et Tnum, de remplir un tableau Tmat par les numéros de
matricules des employés et d'afficher les deux tableaux Tnoms et Tmat.

Admin
Admin

Messages : 137
Date d'inscription : 29/12/2010

Voir le profil de l'utilisateur http://aidescolaire.yoo7.com

Revenir en haut Aller en bas

correction de ce sujet

Message  Admin le Ven 29 Avr - 20:19

solution:

program employe;
uses wincrt;
type
tab=array[1..20] of string;
tab2=array[1..20] of integer;
var
ch:string;
tmat,tnom:tab;
tnum:tab2;
i,n:integer;
procedure saisie (var n:integer;var t:tab);
var
i:integer;
begin
writeln('saisir le nombre d''employé');
readln(n);
for i:=1 to n do
begin writeln('saisir l''employé N°',i);
readln(t[i]); end;
end;
function cle (tnum:tab2;i:integer):string; {permet de determiner le clé d'un employé}
var
x,y,cl:integer;
ch1,ch2:string;
begin
y:=tnum[i] mod 97;
if(y<>0) then
cl:=y else cl:= 97;
str(tnum[i],ch1);
str(cl,ch2);
cle:= concat(ch1,'-',ch2);
end;
begin
saisie(n,tnom);
clrscr;
for i:=1 to n do
begin
repeat
writeln(' le numero d''ordre de ',tnom[i]);
readln(tnum[i]);
until (tnum[i] >=1000) and (tnum[i] <=9999);
tmat[i]:= cle(tnum,i);
end;
clrscr;
for i:=1 to n do
writeln(tnom[i],' a pour matricule ',tmat[i]);

end.

Admin
Admin

Messages : 137
Date d'inscription : 29/12/2010

Voir le profil de l'utilisateur http://aidescolaire.yoo7.com

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum