Gestion des compétitions et inscriptions par CNI dans C

Programming, Math, etc. · exam

Browse all gestion et économie documents

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);

}