Académique Documents
Professionnel Documents
Culture Documents
TD Enregistrements Page 1
Procedure DECOMPOS(E/ SR:entier; E-S/TR:TEMPS);
debut
TR.h<--SR div 3600;
TR.m<--(SR mod 3600) div 60;
TR.s<--(SR mod 3600) mod 60;
fin;
4)
Solution proposée (elle n'est pas unique)
Algorithme exo1;
type
TEMPS=enregistrement
h, m, s: entier;
fin enreg ;
AT=enregistrement
numero :entier ;
nom :chaine ;
resultat :TEMPS ;
Fin enreg ;
var
athlete: tableau[1..100] de AT;
i,N:entier ; moy:reel ; som: TEMPS;
fonction TRANSFORM(…….
…Q2
Procedure DECOMPOS(…
…Q3
debut
repeter
lire(N);
jusqu'à (N>0 et N<=100);
//remplir le tableau
pour i<--1 à N faire
lire(athlete[i].numero, athlete[i].nom);
repeter lire(athlete[i].resultat.h); jusqu'a (athlete[i].resultat.h >=0);
TD Enregistrements Page 2
repeter lire(athlete[i].resultat.m); jusqu'a (athlete[i].resultat.m>=0 et athlete[i].resultat.m<60);
repeter lire(athlete[i].resultat.s); jusqu'a (athlete[i].resultat.s>=0 et athlete[i].resultat.s<60) ;
fait ;
//calculer la moyenne des temps de tous les athlètes
som.h<--0; som.m<--0; som.s<--0;
pour i<--1 à N faire
som.h<-- som.h+ athlete[i].resultat.h;
som.m<-- som.m+ athlete[i].resultat.m;
som.s<-- som.s+ athlete[i].resultat.s;
fait;
moy<--TRANSFORM(som)/N;
//afficher les athlètes dont le temps est inférieure à la moyenne
pour i<--1 à N faire
Si TRANSFORM(athlete[i].resultat)<moy alors ecrire(athlete[i].nom, athlete[i].resultat.h,
athlete[i].resultat.m, athlete[i].resultat.s); fsi;
fait;
FIN.
Exercice 2 :
Considérons les types d’enregistrements suivants :
Type TPoint = Enregistrement
x,y : entier ;
Fin enreg;
TSpace= Enregistrement
Poistion : Tpoint ;
Superficie, Altitude :entier ;
Fin enreg;
TVille = Enregistrement
InfoG : TSpace;
Nom :chaine[25] ;
NBH :entier ; //nombre d’habitants
Fin enreg;
1- Ecrire une fonction Distance qui renvoie la distance entre deux points.
2- Soit un tableau T de N Villes (N≤100). Ecrire un algorithme permettant de :
a- Remplir le tableau T.
b- Afficher la distance entre deux villes A et B.
c- Afficher le nombre d’habitants de la ville la plus élevée.
d- Afficher la position géographique de la ville la plus vaste.
TD Enregistrements Page 3
Solution
Fonction Distance (p1,p2 :Tpoint) :reel ;
Var
D :reel ;
debut
Dsqrt((p1.x-p2.x)^2+(p1.y-p2.y)^2) ;
DistanceD ;
Fin ;
Algorithme dist_ville ;
Type TPoint = Enregistrement
x,y : entier ;
Fin enreg;
TSpace= Enregistrement
Poistion : Tpoint ;
Superficie, Altitude :entier ;
Fin enreg;
TVille = Enregistrement
InfoG : TSpace;
Nom :chaine[25] ;
NBH :entier ; //nombre d’habitants
Fin enreg;
Var
T :tableau[1..100]de TVille ;
A,B :chaine[25] ;
i,j,k,N, max :entier ;
Fonction Distance(p1,p2 :Tpoint) :reel ;
…
Fin ;
debut
repeter lire(N) ; jusqu’à N>0 et N<=100 ;
pour i1 à N faire
TD Enregistrements Page 4
ecrire(‘Donner le nom de la ville’) ;
repeter lire(T[i].Nom) ; jusqu’à longueur(T[i].Nom)>0 ;
ecrire(‘Donner l’’info G :la position , la superficie , l’’altitude et le nombre d’’habitant ’) ;
lire(T[i].InfoG.Position.x, T[i].InfoG.Position.y,T[i].InfoG.Supererficie, T[i].InfoG.Altitude,T[i].NBH ) ;
fait ;
repeter lire(A,B) ; jusqu’à longueur(A)>0 et longueur(B)>0 ;
/*chercher les deux villes dans le tableau*/
i1 ;r0 ;
Tantque i<=N et r<2 faire
Si T[i].nom=A alor ki ; rr+1 ;fsi ;
Si T[i].nom=B alor ji ; rr+1 ;fsi ;
ii+1 ;
fait ;
si r<2 alors ecrire(‘une ou les deux villes n’’existent pas’)
sinon ecrire (‘la distance entre les deux villes=’,Distance (T[k].InfoG.Position, T[j].InfoG.Position) ;
fsi ;
maxT[1].InfoG.Altitude ;k1 ;
pour i2 à N faire
si T[i].InfoG.Altitude>max alors max T[i].InfoG.Altitude ;ki ;fsi ;
fait ;
ecrire(T[k].NBH) ;
maxT[1].InfoG.superficie ;k1 ;
pour i2 à N faire
si T[i].InfoG.superficie>max alors max T[i].InfoG.superficie ;ki ;fsi ;
fait ;
ecrire(T[k].InfoG.Position.x, T[K].InfoG.Position.y) ;
fin.
Exercice 3 :
Considérons les types enregistrement suivant :
Type
TModule = Enregitrement
Nom : chaine[10] ; Note :reel ; Coef : entier ;
Fin enreg ;
TD Enregistrements Page 5
TEtudiant = Enregistrement
Matricule : entier ; Nom, Prenom : chaine [20] ;
M1, M2, M3 : TModule ; Moyenne : réel ;
Fin;
Algorithme Tab_Etudiants;
Type
TModule = Enregitrement
Nom : chaine[10] ;
Note :reel ;
Coef : entier ;
Fin enreg ;
TEtudiant = Enregistrement
Matricule : entier ;
Moyenne : réel ;
Fin enreg;
Var
i, J, N: entier;
debut
repeter
Lire(N);
TD Enregistrements Page 6
// Remplir le tableau T de N étudiants.
pour i 1 à N faire
Fait ;
Pour i 1 à N faire
T[i].M2.Coef) + (T[i].M3.Note*T[i].M3.Coef) ) /
Fait ;
J 0;
Pour i 1 à N faire
J J + 1;
ADMIS[J] T[i];
Fsi ;
Fait ;
Pour i 1 à J faire
TD Enregistrements Page 7
Ecrire(ADMIS[i] .Matricule, ADMIS[i] .Nom, ADMIS[i] .Prenom, ADMIS[i] .moyenne );
Fait ;
Fin.
TD Enregistrements Page 8