EXERCICE X
1.
Exemple 1. Entrer les données (nom et numéro) de deux
étudiants en utilisant le type structure.. Afficher les données
d’étudiant dont le numéro est plus grand.
#include
<stdio.h>
typedef
struct
{ char
name[20];
int
nmbr;
}
student;
student
inputstr(void);
void
outputstr(student *);
void main()
{ student
man1, man2, *s_ptr;
printf("Entrer
les données du premier étudiant ");
man1 =
inputstr();
printf("Nom:
%s\n",man1.name);
printf("Numéro:
%d\n",man1.nmbr);
printf("\n
Entrer les donneé du deuxième étudiant.");
man2
= inputstr();
printf("Nom: %s\n",man2.name);
printf("Numéro: %d\n",man2.nmbr);
s_ptr=(man1.nmbr>man2.nmbr)?&man1:&man2;
printf("\nL’étudiant
dont le numéro est plus grand:\n");
outputstr(s_ptr);
}
student inputstr(void)
{ student
a={0};
printf("\n
nom=> ");
gets(a.name);
printf("
numéro => ");
scanf("%d",&a.nmbr);
fflush(stdin);
return (a);
}
void outputstr(student *ptr_str)
{ printf("Nom d’étudiant: %s\n",ptr_str -> name);
printf("Numéro
d’étudiant: %d\n", ptr_str
-> nmbr);
}
2.
Exemple 2. Modifier le programme d’exemple 1 en ajoutant un troisième
champ de la structure - note. Afficher l’étudiant dont la note
est plus petite.
3.
Exemple 3. Créer une liste des données des fonctionnaires d'une
société. L'information pour chaque fonctionnaire est::nom,
adresse, numéro (EGN). Afficher l’informtion du fonctionnaire dont le
EGN est égal a un EGN donné ou bien une message.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <alloc.h>
#include <stdlib.h>
#define MAX 100
#define RET ""
struct adresse
{ char ville [20];
char rue[20];
int
num;
};
typedef struct
{ char
nom[30];
struct
adresse adr;
char
egn[11];
} fonc;
void entrer(fonc *s[],int *n);
void sortir(fonc *s[],int n);
void sortir_el(fonc *s);
void chercher(fonc *s[],int n,char egn_d[]);
void main()
{ int n;
char
egn_d[11];
fonc
*tab[MAX];
printf("\n
Entrer les donnees des "
"fonctionnaires.\n ");
entrer(tab,&n);
printf("\n
La liste donnee\n");
sortir(tab,n);
printf("Entrer
egn donne:");
gets(egn_d);
chercher(tab,n,egn_d);
}
void entrer(fonc *s[],int *n)
{ char
*t;
*n=0;
while(printf("Entrer
Nom ou bien RET:"),
s[*n]=(fonc*)malloc(sizeof(fonc)),
strcmp(gets(s[*n]->nom),RET)!=0&&*n<MAX)
{ printf("Entrer
Ville:");
gets(s[*n]->adr.ville);
printf("Entrer
Rue:");
gets(s[*n]->adr.rue);
printf("Entrer
Numero:");
s[*n]->adr.num=atof(gets(t));
printf("Entrer
EGN:");
gets(s[*n]->egn);
(*n)++;
if(*n==MAX)
break;
}
}
void sortir(fonc *s[],int n)
{ int i;
for(i=0;i<n;i++)
{
sortir_el(s[i]);
}
}
void sortir_el(fonc *s)
{ printf("Nom: %s\n",s -> nom);
printf("Ville: %s\n",s -> adr.ville);
printf("Rue: %s\n",s -> adr.rue);
printf("Numero:
%d\n",s -> adr.num);
printf("EGN: %s\n",s -> egn);
}
void chercher(fonc *s[],int n,char egn_d[])
{
int
i;
for
(i=0; i<n;i++)
if
(strcmp(s[i]->egn,egn_d)==0)
{ printf("On a trouve \n");
sortir_el(s[i]);
return;
}
printf("On
n'a pas trouve \n");
}
4.
Exemple 4. Déclarer un tableau d'éléments de type
structuré. Chaque structure est composée des champs suivants:
nom, prix, année de la production du médicament. Afficher les
informations des médicaments dont le prix est inférieur d'un prix
donné.