TP C 1ère Année Préparatoire
TP Structure
1
Exercice 1 : Déclaration et Initialisation
Déclarez une structure Personne qui représente une personne avec un nom et un âge. Ensuite,
déclarez et initialisez deux variables de type Personne. Affichez les informations de ces deux
personnes.
Exercice 2 : Structures imbriquées
Déclarer une variable P ayant les informations suivantes :
− Nom (chaîne de caractères)
− Prénom (chaîne de caractères)
− Date de naissance : Jour (entier), Mois (entier) et Année (entier)
− Matricule (chaîne de caractères)
Remplir et afficher P avec les informations suivantes : Nom : "Nom" Prénom : "Prénom" Date de
naissance : "00/00/0000" Matricule : "NP00"
Exercice 3
Déclarez une structure Date qui contient des membres pour le jour, le mois et l'année. Ensuite, créez
une structure Etudiant qui contient un nom, un numéro d'étudiant et une date de naissance. Déclarez
et initialisez une variable de type Etudiant et affichez ses informations.
Exercice 4 : Tableau de structures
Déclarez une structure Livre représentant un livre avec un titre et un auteur. Créez un tableau de 3
livres, initialisez-les et affichez leurs informations.
Exercice 5
Un bus est caractérisé par un numéro, un lieu de départ, un lieu d’arrivée, un horaire de départ et un
horaire d’arrivée. L’horaire est exprimé en (heure / minutes / secondes).
− Déclarer la structure HORAIRE.
− Déclarer la structure BUS.
− Ecrire une fonction SaisirBus un tableau de N éléments de type Bus.
− Ecrire une fonction AffichBus qui permet d’afficher les numéros des bus qui partent d’une
ville Vil1 à la direction d’une ville Vil2, entre deux horaires donnés
− Ecrire une fonction AfficheHeureArriv qui permet d’afficher l’heure d’arrivée d’un bus
sachant son numéro, son lieu et heure de départ et son lieu d’arrivée.
− Ecrire un programme principal main() qui permet de :
o Lire les informations de 10 bus.
o Afficher les bus qui partent de Tanger vers Sale entre 12h 15mn 00s et 15h20mn 00s.
o Afficher l’heure d’arrivée du bus numéro 5150 partant de Casablanca vers Rabat à 15h
30mn 00s.
PR. [Link]
#include <string.h>
// Déclaration de la structure HORAIRE
struct Horaire { 2
int heure;
int min;
int sec;
};
// Déclaration de la structure BUS
struct Bus {
int numero;
char LieuDep[20];
char LieuArr[20];
struct Horaire HDep;
struct Horaire HArr;
};
// Fonction pour saisir les informations des bus dans un tableau
void SaisirBus(struct Bus Tbus[], int N) {
int i;
for (i = 0; i < N; i++) {
printf("\n Donner le numéro de bus: ");
scanf("%d", &Tbus[i].numero);
printf("\n Donner le lieu de départ de bus: ");
scanf("%s", Tbus[i].LieuDep);
printf("\n Donner le lieu d’arrivée de bus: ");
scanf("%s", Tbus[i].LieuArr);
printf("\n Donner l’horaire de départ (heure/min/sec): ");
scanf("%d", &Tbus[i].[Link]);
scanf("%d", &Tbus[i].[Link]);
scanf("%d", &Tbus[i].[Link]);
// Supposez que l'heure d'arrivée soit également saisie de la même manière
}
}
// Fonction pour afficher les bus entre deux horaires donnés et partant d'une ville à
une autre
void AffichBus(struct Bus Tbus[], char V1[], char V2[], struct Horaire H1, struct
Horaire H2, int N) {
int i;
for (i = 0; i < N; i++) {
if (strcmp(Tbus[i].LieuDep, V1) == 0 && strcmp(Tbus[i].LieuArr, V2) == 0) {
if ((Tbus[i].[Link] > [Link] || (Tbus[i].[Link] == [Link] &&
Tbus[i].[Link] >= [Link]))
&& (Tbus[i].[Link] < [Link] || (Tbus[i].[Link] == [Link] &&
Tbus[i].[Link] <= [Link]))) {
printf("\n Numéro de bus trouvé: %d", Tbus[i].numero);
}
}
}
}
// Fonction pour afficher l'heure d'arrivée d'un bus
void AfficheHeureArriv(struct Bus Tbus[], int num, char V1[], char V2[], struct Horaire
H1, int N) {
int i;
for (i = 0; i < N; i++) {
if (Tbus[i].numero == num && strcmp(Tbus[i].LieuDep, V1) == 0 &&
strcmp(Tbus[i].LieuArr, V2) == 0) {
if (Tbus[i].[Link] == [Link] && Tbus[i].[Link] == [Link] &&
Tbus[i].[Link] == [Link]) {
printf("\n L’horaire d’arrivée du bus trouvé: %d %d %d",
Tbus[i].[Link], Tbus[i].[Link], Tbus[i].[Link]);
}
PR. Y. TACE
}
}
}
3
int main() {
struct Bus Tbus[10];
int i;
struct Horaire H1 = {12, 15, 0};
struct Horaire H2 = {15, 20, 0};
struct Horaire H3 = {15, 30, 0};
// Saisir les informations des 10 bus
SaisirBus(Tbus, 2);
// Afficher les bus qui partent de Tanger vers Sale entre 12h15 et 15h20
AffichBus(Tbus, "Tanger", "Sale", H1, H2, 10);
// Afficher l’heure d’arrivée du bus numéro 5150 partant de Casablanca vers Rabat à
15h30
AfficheHeureArriv(Tbus, 5150, "Casablanca", "Rabat", H3, 10);
return 0;
}
PR. Y. TACE