TD 4 Sructure
TD 4 Sructure
TD 4 Sructure
Solution exercice 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct personne{
char nom[20];
int age;
}Personne;
int main()
{
Personne t[100];
int n,i,j;
printf("Donnez le nombre de personnes a lire:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
getchar();
printf("Entrez le nom complet de la personne N%d:\t",i+1);
gets(t[i].nom);
printf("Entrez son age:\t");
scanf("%d",&t[i].age);
}
printf("\nLe tabeau avant la suppression:\n");
for(i=0;i<n;i++)
printf("L'age de %s est: %d ans.\n",t[i].nom,t[i].age);
for(i=0;i<n;i++)
{
if(t[i].age>=20)
{
for(j=i+1;j<n;j++)
{
strcpy(t[j-1].nom, t[j].nom);
t[j-1].age = t[j].age;
}
n--;
i--;
}
}
printf("\nLe tabeau apres la suppression:\n");
for(i=0;i<n;i++)
printf("L'age de %s est: %d ans.\n",t[i].nom,t[i].age);
system("pause");
return 0;
}
Enoncé exercice 2
Correction exercice 2
Maintenant, il suffira d’afficher les heures et les minutes séparées par deux
points. Seulement, on souhaite respecter le format demandé et qui préconise
d’afficher un zéro avant les heures ou les minutes si elles sont composées
juste d’un seul chiffre. Pour exécuter ceci, il faut effectuer un test sur la
valeur des heures et les minutes pour les comparer avec 10 et de les afficher
précédées d’un zéro si elles lui sont inférieures et de les afficher directement
comme elles sont, dans le cas contraire (lignes 14-21).
Solution exercice 2
#include<stdio.h>
#include<stdlib.h>
struct temps{
typedef struct {
int h; int h;
int m;
int m;
}temps;
};
int main()
{
struct temps inst; temps inst;
printf("Donnez l'heure:\n");
scanf("%d",&inst.h);
printf("Donnez les minutes:\n");
scanf("%d",&inst.m);
if(inst.h<10)
printf("0%d:",inst.h);
else
printf("%d:",inst.h);
if(inst.m<10)
printf("0%d\n",inst.m);
else
printf("%d\n",inst.m);
system("pause");
return 0;
}
Enoncé exercice 3
Correction exercice 3
Solution exercice 3
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
struct cercle{
float x;
float y;
float r;
};
struct point{
float x;
float y;
};
int main()
{
struct cercle c[100];
struct point p;
int n,i;
float dist;
printf("Donner le nombre de cercles: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Cercle N: %d\n",i+1);
printf("Donner les coordonees du centre:\n");
scanf("%f%f",&c[i].x,&c[i].y);
printf("Entrer le rayon du cercle:\n");
scanf("%f",&c[i].r);
}
printf("Entrer les coordonees d'un point:\n");
scanf("%f%f",&p.x,&p.y);
for(i=0;i<n;i++)
{
dist=sqrt(pow(c[i].x-p.x,2)+pow(c[i].y-p.y,2));
if(dist<=c[i].r)
printf("Le cercle de cente (%.2f,%.2f) et de rayon %.2f
contient le point (%.2f,%.2f)\n",c[i].x,c[i].y,c[i].r,p.x,p.y);
}
system("pause");
return 0;
}
Enoncé exercice 4
Ecrire un programme C qui crée un structure couple contenant deux entiers
représentant l’âge de la femme et celui de l’homme. Puis l’utilise pour créer
un tableau de structures où il stocke une liste des âges des couples. Ensuite
affiche le pourcentage de couples où la femme est plus âgée que l’homme.
Correction exercice 4
#include<stdio.h>
#include<stdlib.h>
struct couple{
int f;
int h;
};
int main()
{
struct couple c[100];
int i,n,k=0;
printf("Donnez le nombre de couples:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Couple #%d:\n",i+1);
printf("Donner l'age de la femme: ");
scanf("%d",&c[i].f);
printf("Donner l'age de l'homme: ");
scanf("%d",&c[i].h);
}
for(i=0;i<n;i++)
if(c[i].f>c[i].h) k++;
printf("La femme est plus agee dans %.2f%% des
couples\n",k*100.0/n);
system("pause");
return 0;
}
Enoncé exercice 5
Correction exercice 5
Pour lire une liste de noms de couples, on aura besoin de déclarer un tableau
de structures qui est dans ce cas le tableau c de type struct couple (ligne 13).
On exploitera ensuite une boucle for pour lire ces noms, en demandant à
chaque fois à l’utilisateur d’entrer quatre chaînes de caractères représentant
les deux prénoms et les deux noms (lignes 18-29). Pour réussir cette tâche, il
suffira de comprendre l’anatomie d’une case i du tableau.
La case c[i] est une case du tableau c qui est une variable de type struct
couple. Elle se compose donc de deux éléments c[i].h et c[i].f qui sont à
leurs tours des variables de structures de type struct personne. Elles
contiendront chacune deux chaînes de caractères qui
sont c[i].h.nom et c[i].h.prenom pour la première,
puis c[i].f.nom et c[i].f.prenom pour la deuxième. Les choses sont
maintenant simples, il suffira de lire ces quatre éléments en tant que des
chaînes de caractères.
Solution exercice 5
#include<stdio.h>
#include<stdlib.h>
struct personne{
char nom[20];
char prenom[20];
};
struct couple{
struct personne h;
struct personne f;
};
int main()
{
struct couple c[100];
int i,n;
char cc;
printf("Donnez le nombre des couples:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Couple N%d:\n",i+1);
printf(" - Donnez le nom de l'homme: ");
scanf("%s",c[i].h.nom);
printf(" - Donnez le prenom de l'homme: ");
scanf("%s",c[i].h.prenom);
printf(" - Donnez le nom de la femme: ");
scanf("%s",c[i].f.nom);
printf(" - Donnez le prenom de la femme: ");
scanf("%s",c[i].f.prenom);
}
for(i=0;i<n;i++)
{
cc=c[i].h.nom[0];
if(cc>='a' && cc<='z')
c[i].h.nom[0]='A'+cc-'a';
cc=c[i].h.prenom[0];
if(cc>='a' && cc<='z')
c[i].h.prenom[0]='A'+cc-'a';
cc=c[i].f.nom[0];
if(cc>='a' && cc<='z')
c[i].f.nom[0]='A'+cc-'a';
cc=c[i].f.prenom[0];
if(cc>='a' && cc<='z')
c[i].f.prenom[0]='A'+cc-'a';
}
for(i=0;i<n;i++)
printf("Mr %s %s est le mari de Mme %s
%s\n",c[i].h.prenom,c[i].h.nom,c[i].f.prenom,c[i].f.nom);
system("pause");
return 0;}