Langage C - Pages de Michel Deloizy - Free
Langage C - Pages de Michel Deloizy - Free
Langage C - Pages de Michel Deloizy - Free
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
LICENCE SPI-EEA TRAVAUX PRATIQUES M. <strong>Deloizy</strong><br />
TP5 : STRUCTURES<br />
I. Définition d'une structure<br />
Définir la structure T_Quot <strong>de</strong> la manière suivante :<br />
type<strong>de</strong>f struct {<br />
int num ;<br />
int <strong>de</strong>n ;<br />
} T_Quot ;<br />
Cette structure permet <strong>de</strong> manipuler <strong>de</strong>s nombres rationnels en indiquant par la valeur du numérateur et la valeur du<br />
dénominateur.<br />
II. Encombrement mémoire<br />
Observer (avec l'opérateur sizeof) l'encombrement mémoire <strong>de</strong> cette structure.<br />
III. Tableau <strong>de</strong> structures<br />
Définir un tableau permettant <strong>de</strong> mémoriser 1000 structures, en initialisant les <strong>de</strong>ux premières structures avec les<br />
valeurs 16/9 et 4/3.<br />
Indiquer l'encombrement mémoire <strong>de</strong> ce tableau.<br />
IV. Acquisition et affichage <strong>de</strong>s champs<br />
Écrire une fonction permettant d'acquérir au clavier une structure T_Quot.<br />
Cette fonction posera les questions suivantes :<br />
Entrer le numérateur :<br />
Entrer le dénominateur :<br />
Le prototype <strong>de</strong> cette fonction sera :<br />
void AcqQuot(T_Quot *q);<br />
Écrire une fonction qui affiche la valeur <strong>de</strong> la structure sous la forme : nnn / ddd (Ex : 16/9)<br />
Le prototype <strong>de</strong> cette fonction sera :<br />
void AffQuot(T_Quot *q);<br />
Écrire une fonction qui affiche la valeur numérique <strong>de</strong> la structure sous la forme : xxx.xxx (Ex. : 1.778)<br />
Le prototype <strong>de</strong> cette fonction sera :<br />
void AffValQuot(T_Quot *q);<br />
V. Fonctions <strong>de</strong> manipulation associées :<br />
Écrire les fonctions suivantes :<br />
Multiplication <strong>de</strong> 2 rationnels :<br />
T_Quot *MulQuot(T_Quot *q1, T_Quot *q2) ;<br />
Multiplie (*q1) et (*q2). Range le résultat dans une mémoire interne à la fonction dont lřadresse est renvoyée.<br />
Addition <strong>de</strong> 2 rationnels :<br />
T_Quot *AddQuot(T_Quot *q1, T_Quot *q2) ;<br />
Ajoute (*q1) et (*q2). Range le résultat dans une mémoire interne à la fonction dont lřadresse est renvoyée.<br />
<br />
3 Simplification <strong>de</strong> rationnels :<br />
void SimplQuot(T_Quot *q) ;<br />
Simplifie la fraction contenue dans (*q). Range le résultat dans (*q).<br />
On utilisera un algorithme <strong>de</strong> recherche du pgcd :<br />
Algorithme d’Eucli<strong>de</strong><br />
ENTREE : Deux entiers a et b. - SORTIE : Leur plus grand diviseur commun, pgcd(a,b).<br />
1. Faire tant que le reste est non nul :<br />
Division entière avec reste <strong>de</strong> a et b : a = q · b + r<br />
a ← b; b ← r<br />
2. Retourner b, qui est alors le plus grand diviseur commun.<br />
Exemple : Calcul du pgdc <strong>de</strong> 2926 et 30030. On obtient le tableau suivant.<br />
a b q r<br />
2926 30030 0 2926<br />
30030 2926 10 770<br />
2926 770 3 616<br />
770 616 1 154<br />
616 154 4 0<br />
Le resultat est donc : pgdc(30030, 2926) = 154.<br />
3 Exercice optionnel<br />
-38-