Cours Algo - 22 - 10 - 19
Cours Algo - 22 - 10 - 19
Cours Algo - 22 - 10 - 19
Type structuré
• Un type structuré(ou enregistrement) est une structure de données permettant
de sauvegarder des éléments hétérogènes (de type différent).
Traduction en langage C:
Types struct etudiant
{int num_inscr;
Structure etudiant
char nom[20];
num_inscr: entier float moyenne;};
nom : chaîne
Moyenne : réel Main()
Fin structure {struct etudiant E1,E2;
struct etudiant TE[20];
Var …
E1,E2 : etudiant scanf("%d",&TE[0].num_inscr);
TE : tableau[1..20] : etudiant }
1
22/10/2019
Traduction en langage C:
struct etudiant
Type structuré {int num_inscr;
char nom[20];
• Saisie d’une variable structure float moyenne;};
Main()
lire(E1.num_inscr) {struct etudiant E1,E2;
lire(E1.nom, E1,moyenne) struct etudiant TE[20];
…
scanf("%d", &E1,num_inscr);
Pour i de 1 à 20 faire scanf("%s%f", E1.nom, &E1.moyenne);
lire(TE[i].num_inscr, TE[i].nom,
for(i=0;i<20;i++)
TE[i].moyenne) {scanf("%d",&TE[i].num_inscr);
Fin pour ….}
Structures de structures
• Une structure peut contenir des éléments de type simple ou des éléments de
type composé.
Traduction en langage C:
Types struct adresse
{int num;
Structure adresse char rue[30];};
num : entier typedef struct adresse home;
struct etudiant
rue : chaîne {int num_inscr;
Fin structure char nom[20];
float moyenne;
Structure etudiant home residence;};
num_inscr: entier
nom : chaîne Main()
{struct etudiant E1,E2;
moyenne : réel struct etudiant TE[20];
residence : adresse …
scanf("%d",&TE[i].residence.num);
Fin structure }
2
22/10/2019
Traduction en langage C:
Structures avec tableau Typedef struct
{int num;
char rue[30];} adresse;
• Une structure peut contenir parmi ses struct etudiant
éléments un tableau. {int num_inscr;
char nom[20];
Types float moyenne;
Structure adresse adresse residence[3];};
num : entier
Main()
rue : chaîne
{struct etudiant E1,E2;
Fin structure struct etudiant TE[20];
Structure etudiant …
num_inscr: entier scanf("%d",&TE[i].residence[0].num);
nom : chaîne scanf("%d",&TE[i].residence[0].rue);
moyenne : réel scanf("%d",&TE[i].residence[1].num);
residence : tableau [1..3] : adresse ….
}
Fin structure
3
Série n°5
Algorithmique et programmation
Exercice 1
On se propose de gérer une classe de N étudiants (0<N≤20). Un étudiant est caractérisé par
son numéro d’inscription, son nom et sa moyenne.
Exercice 2
On se propose de gérer les commandes d’une entreprise par un tableau (taille ≤ 50).
Une commande est composée : d’un nom de produit, d’une quantité, d’un prix unitaire et du
client qui a passé la commande.
Un client est caractérisé par : un nom, un numéro de téléphone et un email.
etud saisir_e()
{
struct etudiant x;
printf("Saisir les donnees d'un etudiant\n");
printf("num :");scanf("%d",&x.num_insc);
printf("nom :");scanf("%s",x.nom);
printf("moyenne :");scanf("%f",&x.moyenne);
return x;
}
void afficher_e(etud e)
{
printf("num inscr : %d\n",e.num_insc);
printf("nom : %s\n",e.nom);
printf("moyenne : %f\n",e.moyenne);
}
int main()
{
etud TE[20];
int i, permut, n;
etud aux;
do{
printf("Saisir n :");
scanf("%d",&n);
}while(n<1 || n>20);
for(i=0;i<n;i++)
TE[i]=saisir_e();//saisir_e2(&TE[i]);
do{
permut=0;
for(i=0;i<n-1;i++)
{
if(TE[i].moyenne <TE[i+1].moyenne)
{
aux=TE[i];
TE[i]=TE[i+1];
TE[i+1]=aux;
permut=1;
}
}
}while(permut);
for(i=0;i<n;i++)
afficher_e(TE[i]);
}
Série 5 Exercice2
#include <stdio.h>
typedef struct
{
char nom[20];
int tel;
char mail[20];
}client;
typedef struct
{
char nomp[20];
int qte;
float pu;
client clt;
}cmd;
client saisirclt()
{ client x;
printf("\n nom client :");scanf("%s",x.nom);
printf("\n tel client :");scanf("%d",&x.tel);
printf("\n mail client :");scanf("%s",x.mail);
return x;
}
void saisircmd(cmd *commande)
{
cmd c;
printf("\n ******* Saisir commande :");
printf("\n nom produit :");scanf("%s",c.nomp);
printf("\n quantite produit :");scanf("%d",&c.qte);
printf("\n prix unit :");scanf("%f",&c.pu);
c.clt=saisirclt();
*commande = c;
}
if (T[i].clt.tel == t)
printf("\n nom : %s , telephone : %d , mail : %s",T[i].clt.nom, t, T[i].clt.mail);
}
void main()
{
cmd tab[50];
int n,i,im;
do
{
printf("Saisir nombre commandes");
scanf("%d",&n);
}while(n<1 || n>50);
for(i=0;i<n;i++)
saisircmd(&tab[i]);