Vous êtes sur la page 1sur 6

Université Cadi Ayyad

Faculté des Sciences Semlalia Marrakech  


  Département d’Informatique

TP5- Programmation II
Module informatique SMI-S4
2020-2021

Les types composés

Exercice 1

a Définir un type Date pour des variables formées d’un numéro de


jour, d’un nom de mois et d’un numéro d’année
b Ecrire des fonctions de lecture et d’écriture d’une variable de type
Date
#include <stdio.h>
typedef struct {
int jour;
char mois[10];
int annee;
} DATE;
int main() {
DATE LireDate(void);
void AfficheDate(DATE);
DATE date;
date = LireDate();
AfficheDate(date);
return 0;
}
void AfficheDate(DATE date) {
printf("La date est: %d %s %d\n", date.jour, date.mois,
date.annee);
}
DATE LireDate(void) {
DATE temp;
printf("Enter la date (sous cette forme:: jour(1-31)
mois(Janvier - Decembre) annee(xxxx)):? ");
scanf("%d %s %d", &temp.jour, temp.mois, &temp.annee);
return temp;
}
Exercice 2

1. Écrire un programme qui :


a Définit une structure point qui contiendra les deux
coordonnées d'un point du plan.
b Définit une fonction qui calcule la distance entre les deux
points dont le prototype est :
float distPoint( Point *A, Point *B) ;
c Ecrire le programme principales main pour manipuler les
types points et le calcule de distance
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef struct point{
float x;
float y;
}Point;
float distPoint( Point *A, Point *B){
return (sqrt( (A->x-B->x)*(A->x-B->x) + (A->y-B->y)*(A-
>y-B->y) ));
}
int main(){
Point A,B;
float dist;
printf("Entrez les coordonnées du point A:\n");
scanf("%f%f",&A.x,&A.y);
printf("Entrez les coordonnées du point B:\n");
scanf("%f%f",&B.x,&B.y);
dist = distPoint(&A,&B);
printf("La distance entre les points A et B est:
%.2f\n",dist);
return 0;
}

Exercice 3

Ecrire un programme qui lit un ensemble de villes avec leur


nombre d'habitants dans un tableau de structures, les trie et les
affiche dans l'ordre croissant des nombres d'habitants.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct ville{
char nom[20];
int nbr;
}Ville;
int main()
{
Ville t[100];
Ville tmp;
int i,j,n;
printf("Donnez le nombre de villes:\t");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Donnez le nom de la ville N %d:\t",i+1);
scanf("%s",t[i].nom);
printf("Donnez le nombre d'habitants de cette
ville:\t");
scanf("%d",&t[i].nbr);
}
for(i=0;i<n;i++)
printf("-- Le nombre d'habitants de %s est :
%d\n",t[i].nom,t[i].nbr);
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++){
if(t[j].nbr>t[j+1].nbr){
strcpy(tmp.nom,t[j].nom);
tmp.nbr = t[j].nbr;
strcpy(t[j].nom,t[j+1].nom);
t[j].nbr = t[j+1].nbr;
strcpy(t[j+1].nom,tmp.nom);
t[j+1].nbr = tmp.nbr;
}
}
printf("\n Les villes dans l'ordre croissant du nombre
d'habitants:\n");
for(i=0;i<n;i++)
printf("-- Le nombre d'habitants de %s est :
%d\n",t[i].nom,t[i].nbr);
return 0;
}

Exercice 4
1) Ecrire la déclaration d’un type Fiche permettant de mémoriser les
informations sur un étudiant :

• son nom ;
• son prénom ;
• sa date de Naissance, de type Date ;
• sa formation, représentée par deux lettres ;
• s’il est redoublant ou non ;
• son groupe de TD, représenté par un entier ;
• ses notes, représentées par un tableau note d’au plus
MAXNOTES réels;
• un entier nbnotes indiquant le nombre de notes valides dans
le tableau note.

2) Ecrire les fonctions LireFiche et EcrireFiche de lecture et d’écriture


d’une Fiche (Aucune note n’est entrée par la fonction LireFiche)

3) Ecrire une fonction AjouteNote qui reçoit une Fiche et ajoute une
note, (si cela est possible)

4) Ecrire une fonction Moyenne qui reçoit une Fiche et renvoie, si cela
est possible, la moyenne des notes de l’étudiant

#include <stdio.h>
#define MAXNOTES 10
typedef struct {
int jour;
char mois[10];
int annee;
} DATE;
typedef struct {
char nom[20];
char prenom[20];
DATE date_naissance;
char info[3];
char redoublant;
int groupe;
float notes[MAXNOTES];
char nom_module[MAXNOTES][30];
int nbnotes;
} FICHE;
FICHE LireFiche(void);
void EcrireFiche(FICHE);
FICHE AjouteNote(FICHE);
float MoyenneFiche(FICHE);
int main(void) {
FICHE etd_fiche;
etd_fiche = LireFiche();
etd_fiche = AjouteNote(etd_fiche);
etd_fiche = AjouteNote(etd_fiche);
EcrireFiche(etd_fiche);
return 0;
}
FICHE AjouteNote(FICHE fiche) {
if (fiche.nbnotes < MAXNOTES) {
printf("Entrez le nom du module: ? ");
scanf(" %[^\n]s", fiche.nom_module[fiche.nbnotes]);
printf("Entrez sa notes pour ce module: ? ");
scanf("%f", &fiche.notes[fiche.nbnotes]);
fiche.nbnotes++;
}else
printf("\n <---- c'est pas possible d'ajuter une note-
--->\n");
return fiche;
}
FICHE LireFiche(void) {
FICHE fiche;
printf("Entrez le nom de l'etudiant:? ");
scanf(" %s", fiche.nom);
printf("Son prenom:? ");
scanf(" %s", fiche.prenom);
printf("Sa date de Naissance: (dd mm yyyy) ? ");
scanf("%d %s %d", &fiche.date_naissance.jour,
fiche.date_naissance.mois, &fiche.date_naissance.annee);
printf("Sa formation: ? ");
scanf(" %s", fiche.info);
printf("Il est redoublant ou non (O:Oui, N:Non) ? ");
scanf(" %c", &fiche.redoublant);
printf("Son groupe: ?");
scanf("%d", &fiche.groupe);
fiche.nbnotes=0;
return fiche;
}
void EcrireFiche(FICHE fiche) {
int i;
printf("La fiche de %s, %s\n", fiche.nom, fiche.prenom);
printf("\tSa date de Naissance est le %d %s %d\n",
fiche.date_naissance.jour,fiche.date_naissance.mois,fiche.
date_naissance.annee);
printf("\tSa formation: %s\n", fiche.info);
printf("\tSon groupe: %d\n", fiche.groupe);
printf("\tIl est redoublant: %s\n", (fiche.redoublant
=='O')? "Oui":"Non");
printf("\nSes notes: \n");
printf("\t----------------------------------------------
-\n");
printf("\t Nom de Module \t \t Note\n");
printf("\t----------------------------------------------
-\n");
for (i=0; i<fiche.nbnotes; i++)
printf("\t %20s \t %5.2f\n", fiche.nom_module[i],
fiche.notes[i]);
float moy= MoyenneFiche(fiche);
printf("\t La moyenne generale de l'etudiant :%s , %s
est %.3f\n",fiche.nom, fiche.prenom, moy );
}
float MoyenneFiche(FICHE fiche){
float moy;
float som=0;
int i;
if (fiche.nbnotes >0 && fiche.nbnotes <=MAXNOTES) {
for (i=0; i<fiche.nbnotes; i++)
som= som + fiche.notes[i];
moy=som/fiche.nbnotes;
}else
printf("\n <---- c'est pas possible de calculer la
moyen des modules---->\n");
return moy;
}

Vous aimerez peut-être aussi