Académique Documents
Professionnel Documents
Culture Documents
Exercice N°1 :
Ecrire un programme qui permet de remplir les éléments de la structure Matiere définit par
CodeMat, LibelleMat, NbreHeureMat, CoefMat, Niveau.
Appliquer les différentes manipulations possibles sue cette structure (déclaration des
variables, initialisation, affectation globale, saisie et changements des valeurs, …)
Exercice 5 : Heure
Définir une structure heure permettant de représenter une heure sous le format hh/mm/ss.
Écrire les fonctions suivantes (ainsi qu'une fonction main les utilisant) :
- Conversion d'une heure en nombre de secondes.
- Conversion d'un nombre en secondes en un élément de type heure.
- Addition de deux éléments de type heure, d'abord en utilisant les fonctions précédentes puis
sans les utiliser.
Exercice 6 :
Créer une structure point_cartesien{float x; float y;} ;
Saisir 4 points, les ranger dans un tableau puis les afficher.
Créer une deuxième structure point_polaire {float r ;float t ;} ;
Transformer les point_cartesiens en des point_polaires à l’aide de la fonction cart_to_pol.
Afficher les nouveaux points.
TP Langage C Les Structs
Exercice 7 :
Une image est décrite comme étant une composition de primitives graphiques. On considère
trois primitives graphiques :
- Cercle : définit par les coordonnées de son centre et son rayon.
- Rectangle : définit par les coordonnées des points « haut gauche » et « bas droit ».
- Polygone : défini par le nombre de cotés et les coordonnées des points le définissant.
Les coordonnées des points sont des paires de nombre entier.
Une image est constituée comme suit :
Cercle (X,Y),R
Rectangle (X,Y),(Z,T)
Polygone Nb, (X1,Y1),.
I- Définir les types cercle, rectangle et polygone.
II- Définir le type image correspondant à la description d’une image.
III- Permettre à l’utilisateur de dessiner plusieurs images.
Exercice 8 :
Partie 1 : On définit une pièce (dans un logement) par sa superficie, le nombre de personnes
qui dorment dedans et le nombre de chaises qu'on y trouve. Dans un même fichier C :
a- Définir un nouveau type piece.
b- Ecrire une fonction de saisie ayant pour profil piece saisie_piece() qui rend une valeur
de type piece, dont la valeur des champs est demandée à l'utilisateur.
c- L'opérateur == ne s'applique pas aux structures. Définir alors une fonction int
egal_piece(piece p1, piece p2) qui rend 1 si les pièces sont égales (comparaisons de tous les
champs des deux structures) et 0 sinon.
Ecrire ensuite une fonction de comparaison piece comp_piece(piece p1, piece p2) qui rend la
plus grande pièce parmi deux.
d- Ecrire la fonction main() déclarant 3 pièces, demandant les données à l'utilisateur et,
pour finir, affichant la superficie de la pièce la plus grande.
Partie 2 : Ajouter un type appart composé de 3 pièces et d'un entier indiquant le nombre
d'enfants qui l'occupent. On écrira ensuite une fonction appart saisie_appart() de saisie des
données d'un appartement. Pour finir, il s'agira d'écrire la fonction principale dans laquelle on
demande la saisie des données d'un tel appartement puis on affiche:
- La superficie totale.
- Le nombre total de chaises qu'on y trouve
TP Langage C Les Structs
Exemple : Pour une application de gestion de stock, on peut définir la structure PRODUIT et
qui contient l’ensemble de ses caractéristiques tel que identifiant de l’article, nom du produit,
unité, quantité, prix… D’où la structure suivante :
struct PRODUIT{
int identifiant ;
char nom[20] ;
char unite[10] ;
int quantite ;
float prix ;
};
Pour déclarer une variable de type structure, on suit la syntaxe suivante :
struct id_struct{
type1 champ1 ;
type2 champ2 ;
....
typeN champN ;
}id_var1;
Il est possible, après avoir déclaré la structure, d’ajouter la ligne suivante :
struct id_struct id_var1 ;
1.4. Accès aux champs d’une structure : Les champs d’une structure peuvent être accédés
directement par leur nom au moyen d’une notation "pointée". Il suffit en effet de mettre le
nom de la variable de type structure, un point (opérateur) et le nom du champ pour accéder à
son contenu, y stocker une valeur : nom_variable.nom_champ
Exemple :
struct PRODUIT prod ;
prod.identifiant=115 ;
prod.nom= “coca“;
prod.unite=“bouteille“ ;
prod.quantite=150 ;
prod.prix=520.25 ;
int ident ;
ident=prod.identifiant ;
TP Langage C Les Structs
2. Les unions :
2.1. Définition : Les unions sont de nouvelles structures de données assez proches des
structures. Elles permettent de considérer un même objet de différents points de vue. Selon les
besoins du programmeur, il pourra revêtir des formes diverses. Une union permet de définir
un objet comme pouvant être d'un type au choix parmi un ensemble fini de types, appelés les
membres de l'union. Un membre de l'union est identifié par un identificateur, le nom du membre.
L'union occupera en mémoire la place nécessaire pour représenter le membre le plus "grand".
Dans le programme, un programmeur pourra décider le type à donner à l'union avec un opérateur
de sélection.
2.2. Déclaration : La déclaration de l’union se fait par le mot réservé union suivi d'une liste
de membres entre accolades.
union nom {
type1 champ1;
type2 champ2;
...
typeN champN;
};
Exemple :
union exemple {
char car_val; /* contient un caractère */
int ent_val; /* ou un entier */
float flo_val; /* ou un flottant */
char tex_val[10]; /* ou du texte */
};
union exemple data;
data.flo_val = 123.425;
printf ("%f", data.flo_val); /* est valide */
printf ("%d", data.ent_val); /* n’a pas de sens car
l’union contient un float.*/
3.Les enumerations
3.1. Définition : Il arrive fréquemment que la valeur d’une variable fasse partie d’un
ensemble fini de symboles. On parle dans ce cas de types énumérés car il est possible de
décrire complètement la liste de toutes les valeurs possibles.
3.2. Déclaration : La déclaration d’une énumération se fait par le mot réservé enum suivi de
la liste des valeurs entre accolades.
enum Nom {
val1,
Val2,
.....,
ValN
};
Exemple : On déclare l’énumération jour pouvant prendre une valeur parmi les valeurs de
lundi à dimanche.
enum jour {
lundi,
mardi,
mercredi,
jeudi,
vendredi,
TP Langage C Les Structs
samed
i,
diman
che
} ;
enum jour J=jeudi ;
Remarque : Le compilateur assigne une valeur par défaut à chaque élément de la liste
en commençant par 0 et en incrémentant à chaque fois. Exemple :
enum jour {
lundi=6,
mardi=5,
mercredi
=4,
jeudi=3,
vendredi
=2,
samedi=1
,
dimanche
=0
} ;
enum jour weekend,
fin_sem;
weekend=dimanche;
fin_sem=samedi ;
printf(“%s“,weekend) ; /* affiche dimanche */
printf(“%d“,fin_sem) ; /* affiche 1 */
6, mardi
= 5,
mercredi =
4, jeudi
= 3,
vendredi =
2, samedi
= 1,
dimanche =
0
} JOUR;
void main(){
entier n =
6; point
xy; xy[0]
= 8.6;
xy[1] = -9.45;
JOUR jour = lundi;
etc
...}