TP N 9 : Les Structures
Exercice n 1 :
#include<stdio.h>
typedef struct
{ int num;
char nom[21];
char prenom[21];
float poid;
} joueur;
int verifier(joueur *t,int i,int n)
{
int j=0;
while(i !=0&&j<i)
{ if (t[j].num ==n)
return 1 ;
else j++ ;
}
return 0;
}
void remplissage(joueur *t,int n)
{
int i,np,existe,j;
for(i=0;i<n;i++)
{
printf("donner le nom");
scanf("%s",t[i].nom);
printf("donner le prenom");
scanf("%s",t[i].prenom);
do
{
printf("donner le poids");
scanf("%f",&t[i].poid);
}while(!(t[i].poid>0));
do
{
printf("donner le num de poste");
scanf("%d",&t[i].num);
}while(!(verifier(t,i,t[i].num)==0&&t[i].num>=
1&&t[i].num<=15));
}
printf("/*Affichage du tableau/\n");
for(i=0;i<n;i++)
{
printf("les informations du joueur n%d:\n",t[i].num);
printf("\t\tnom:%s\n",t[i].nom);
printf("\t\tprenom:%s\n",t[i].prenom);
printf("\t\tpoids:%f\n",t[i].poid);
}
}
void pluslourd(joueur *t,int n)
{
float max; int i=0,jmax;
max=t[0].poid;
for(i=1;i<n;i++)
{if(t[i].poid>max)
{
max=t[i].poid; jmax=i;
}
}
printf("\nle joueur le plus lour c'est le num%d",t[jmax].num);
printf("\t\tnom:%s\n",t[jmax].nom);
printf("\t\tprenom:%s\n",t[jmax].prenom);
printf("\t\tpoids:%f\n",t[jmax].poid);
}
main()
{int n; joueur t[15];
do
{printf("donner le nombre du joueur\n");
scanf("%d",&n);
}while(!(n>0&&n<=15));
remplissage(t,n);
pluslourd(t,n);
}
Exercice n 2 :
#include<stdio.h>
#include<string.h>
typedef struct
{char ncin[9];
char nom[21];
char prenom[21];
} participant;
typedef struct
{ int id;
char nomcomp[10];
int nbpart;
participant t[50];
} competition;
participant saisir_part()
{participant p;
printf("donner le ncin");
Advertisement
scanf("%s",p.ncin);
printf("donner le nom");
scanf("%s",p.nom);
printf("donner le prenom");
scanf("%s",p.prenom);
return p;
}
void saisir_comp(competition s[],int n)
{int i,j,nb;
for(i=0;i<n;i++)
{printf("donner l identifiant de la competition");
scanf("%d",&s[i].id);
printf("donner le nom de la comp");
scanf("%s",s[i].nomcomp);
printf("donner le nombre de participants\n");
scanf("%d",&s[i].nbpart);
for(j=0;j<s[i].nbpart;j++)
{
s[i].t[j]=saisir_part();
}
}
}
int nbre_comp(competition s[],int n,char ncin[9])
{
int i,j,nbre=0;
for(i=0;i<n;i++)
{
for(j=0;j<s[i].nbpart;j++)
{ if(strcmp(s[i].t[j].ncin,ncin)==0)
nbre++;
}
}
return (nbre);
}
main()
{int n,i,j;
char ncin[9];
competition s13[10];
do
{printf("donner le nombre total de compétition");
scanf("%d",&n);
}while(!(n>0&&n<=10));
saisir_comp(s13,n);
printf("donner le numero du ncin");
scanf("%s",ncin);
printf("le joueur num %s a participe dans %d
competitions",ncin,nbre_comp(s13,n,ncin));
}
Exercice n 3:
#include<stdio.h>
#include<stdlib.h> // on en a besoin par ce qu'elle contient la
function atoi
typedef struct date{
char jour[3];
char mois[3];
char annee[5];
} DATE;
int nb_jour_mois(int mois, int annee)
{
switch(mois)
{ case 1:case 3:case 5:case 7:case 8:case 10:case 12:
return(31); break;
case 4:case 6:case 9:case 11: return(30); break;
case 2: if((annee%4==0))
return(29);
else
return(28);
}
}
void saisir_date_initiale(DATE *t)
{ int j,m,a;
do{
printf("Donner l'annee : ");
scanf("%s",t->annee);
a = atoi(t->annee); // La fonction atoi(nom chaine) convertit
une chaine en entier
}while(a < 0);
do{
printf("Donner le mois : ");
scanf("%s",t->mois);
m = atoi(t->mois);
}while(m < 0 || m > 12);
do{
printf("Donner le nombre de jours : ");
scanf("%s",t->jour);
j = atoi(t->jour);
}while((j < 0)|| (j > nb_jour_mois(m,a)));
}
void saisir_nb_jours (int *n)
{
Advertisement
do {
printf("Donner le nombre de jours à ajouter : ");
scanf("%d",n);
}while(*n <= 0);
}
void dateinc(DATE *t,int n)
{int j,m,a, temp;
j = atoi(t->jour);
m = atoi(t->mois);
a = atoi(t->annee);
j+=n;
temp = nb_jour_mois(m,a);
while (j > temp)
{
j-=temp;
m++;
if(m>12)
{ m=1;
a++; }
temp = nb_jour_mois(m,a);
}
sprintf(t->jour,"%d",j);
sprintf(t->mois,"%d",m);
sprintf(t->annee,"%d",a);
}
void afficher(DATE t)
{
printf("La date est: %s/%s/%s.\n", t.jour, t.mois, t.annee);
}
main()
{
DATE d;
int n;
saisir_date_initiale(&d);
afficher(d);
saisir_nb_jours(&n);
dateinc(&d,n);
afficher(d);
}
Exercice n 4:
#include<stdio.h>
#include<string.h>
typedef struct
{char modele[21];
float pu;
int qtd;
} article;
typedef struct
{char modele[21];
int qte;
}commandeunitaire;
article stock[100];
typedef struct
{char nomclt[21];
commandeunitaire cu[100];
}commande;
article saisirArticle()
{article a;
printf("donner le modele");
scanf("%s",a.modele);
printf("donner le prix");
scanf("%f",&a.pu);
printf("donner la quantitée");
scanf("%d",&a.qtd);
return a;
}
void ajouterArticle(article a,int i)
{
stock[i]=a;
}
int saisircomdunt(commandeunitaire cu[])
{char r='n';
int i=0;
do
{
scanf("%s",cu[i].modele);
printf("donner le modele");
printf("donner la quantitée");
scanf("%d",&cu[i].qte);
i++;
printf("voulez vous continuer o/n");
scanf(" %c",&r);
}while(!(r=='n'||r=='N'));
return i;
}
float retirerCommandeUnitaire(article *stock,commandeunitaire
cu)
{
int existe=0,i=0;
float r=0;
Advertisement
do
{
if((strcmp(stock[i].modele,cu.modele))==0)
{
existe=1;
if(stock[i].qtd>=cu.qte)
{ r=cu.qte*stock[i].pu;
stock[i].qtd=stock[i].qtd-cu.qte;
}
else
printf("STOCK INSUFFISANT!!!!!!");
}
i++;
}while(!(existe==1||i>100));
if(existe==0)
printf("STOCK INSDISPONIBLE!!!!!!");
return r;
}
void afficheStock(article *stock,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("\ainformations d article n %d\n",i+1);
printf("\t\tmodéle :%s\n",stock[i].modele);
printf("\t\tprix :%f\n",stock[i].pu);
printf("\t\tquantitée :%d\n",stock[i].qtd);
}
}
main()
{
commande cd;
int n,i,r,j,nbc;
float s=0;
do
{
printf("donner le nombre d article\n");
scanf("%d",&n);
}while(!(n>0&&n<=100));
for(i=0;i<n;i++)
{
ajouterArticle(saisirArticle(),i);
}
printf("*votre stock initial* \n");
afficheStock(stock,n);
printf("donner le nom du client");
scanf("%s",cd.nomclt);
nbc=saisircomdunt(cd.cu);
printf("/*la commande de Mr/Mme%s\n",cd.nomclt);
for(i=0;i<nbc;i++)
{
printf("\t\tmodele %s\n",cd.cu[i].modele );
printf("\t\tquantite %d\n",cd.cu[i].qte);
}
for(i=0;i<nbc;i++)
{
r=retirerCommandeUnitaire(stock,cd.cu[i]);
if(r!=0)
s=s+r;
}
if(s!=0)
printf("le prix totale de votre commande%f\n",s);
printf("\n/*Votre nouveau Stock*/\n");
afficheStock(stock,n);
}
Exercice n 5 :
#include<string.h>
#include<stdio.h>
typedef struct
{int minutes;
int secondes;
}temps;
typedef struct
{
char titre[30];
char interpretre[30];
temps duree;
}chanson;
typedef chanson album[12];
void saisirchanson(chanson *c)
{
printf("donnez le titre\n");
scanf("%s",c->titre);
printf("donnez l interprete\n");
scanf("%s",c->interpretre);
printf("donnez le nombre de minutes\n");
scanf("%d",&c->duree.minutes);
printf("donnez le nombre de secondes\n");
scanf("%d",&c->duree.secondes);
}
Advertisement
void afficherchanson(chanson c)
{
printf("le titre %s linterprete %s le nombre de minute
%d et le nombre de secondes
%d\n",c.titre,c.interpretre,c.duree.minutes,c.duree.secondes);
}
/1ére Méthode/
int comparerduree(chanson c1,chanson c2)
{
int d1,d2;
d1=c1.duree.minutes*60+c1.duree.secondes;
d2=c2.duree.minutes*60+c2.duree.secondes;
if(d1>d2)
return 1;
else
if(d1<d2)
return 2;
else
return 0;
}
/2ème Méthode/
int comparerduree(chanson c1,chanson c2)
{
if(c1.duree.minutes>c2.duree.minutes)
return 1;
else
if(c1.duree.minutes<c2.duree.minutes)
return 2;
else
if(c2.duree.secondes<c1.duree.secondes)
return 1;
else
if(c2.duree.secondes>c1.duree.secondes)
return 2;
else
return 0;
}
void rempliralbum(album a,int n)
{
int i;
for(i=0;i<n;i++)
{
saisirchanson(&a[i]);
}
}
void afficherralbum(album a,int n)
{
int i;
for(i=0;i<n;i++)
{
afficherchanson(a[i]);
}
}
int chansonsmemeinterpret ( album a, int n, char intp[])
{
if(n==0)
return 0;
else
if (strcmp(a[n-1].interpretre,intp)==0)
{afficherchanson(a[n-1]);
return 1+chansonsmemeinterpret(a,n-1,intp);
}
else
return chansonsmemeinterpret (a,n-1,intp);
}
main()
{
int n,i;
chanson plusCourteC;
album a;
char intp[10];
printf("donner le nombre de chanson\n");
scanf("%d",&n);
rempliralbum(a,n);
printf("\n Affichage Album\n");
afficherralbum(a,n);
printf("donner le nom de l interprete\n");
scanf("%s",intp);
printf("\n\nCHANSONS MEME INTERPRETE: \n");
printf("l interprete %s a %d
chanson",intp,chansonsmemeinterpret (a,n,intp));
plusCourteC=a[0];
for(i=1;i<n;i++){
if (comparerduree(plusCourteC, a[i]) == 1)
plusCourteC=a[i];
}
printf("\n\nPLUS COURTE CHANSON: \n");
afficherchanson(plusCourteC);
}