bac2005: clé d'employés
Page 1 sur 1
bac2005: clé d'employés
É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.
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.
correction de ce sujet
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.
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.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum