Enoncé exercice 1
Ecrire un programme C qui définit une structure point qui contiendra les deux coordonnées d’un point du plan. Puis lit deux points et affiche la distance entre ces deux derniers.
Correction exercice 1
Pour cet exercice, on aura besoin d’une structure point à deux éléments réels x et y. Et ceux, pour contenir respectivement l’abscisse et l’ordonné d’un point du plan.
La définition de la structure (lignes 4-7) doit ce faire impérativement avant la fonction main et doit être suivie d’un point virgule après l’accolade fermante.
Une fois la structure définie, on peut utiliser le type qu’on a construit struct point pour déclarer les deux variables A et B (ligne 10). Chacune de ces variables contient deux composants x et y auxquels on peut accéder par les deux variables réelles A.x et A.y pour le point A et B.x et B.y pour B.
Pour la lecture de A et B, il n’existe pas de possibilité pour dire à la fonction scanf de lire une structure. Ceci dit, elles doivent être lues composant par composant (lignes 13 et 15).
La variable réelle dist est utilisée pour recevoir la valeur de la distance entre les deux points (ligne 16). Le résultat sera affiché juste après le calcul de cette distance (ligne 17).
Solution exercice 1
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
struct point{
float x;
float y;
};
int main()
{
struct point A,B;
float dist;
printf("Entrez les coordonnees du point A:\n");
scanf("%f%f",&A.x,&A.y);
printf("Entrez les coordonnees du point B:\n");
scanf("%f%f",&B.x,&B.y);
dist = sqrt( (A.x-B.x)*(A.x-B.x) + (A.y-B.y)*(A.y-B.y) );
printf("La distance entre les points A et B est: %.2f\n",dist);
system("pause");
return 0;
}
Enoncé exercice 2
Ecrire un programme C qui définit une structure etudiant où un étudiant est représenté par son nom, son prénom et une note. Lit ensuite une liste d’étudiants entrée par l’utilisateur et affiche les noms de tous les étudiants ayant une note supérieure ou égale à 10 sur 20.
Correction exercice 2
On définit une structure à trois éléments: deux chaînes de caractères pour le nom et le prénom et un entier pour la note (lignes 4-8). La nouveauté dans cet exercice est qu’on aura besoin d’un tableau de structures car le nombre d’étudiants que va entré l’utilisateur n’est pas connu d’avance. La procédure pour ça sera la même que pour les types simples: on précise le type des éléments du tableau qui est dans notre cas struct etudiant, puis le nom du tableau et sa taille (ligne 11). On lit ensuite le nombre d’étudiants (ligne 14), et on procède à la lecture du tableau avec une boucle for (ligne 15).
Un élément du tableau t[i] est une variable de type struct etudiant qui a trois composants: deux chaînes de caractères t[i].nom et t[i].prenom et un entier t[i].note. A chaque itération de la boucle for on doit lire ces trois variables qui constituent les données d’un étudiant (lignes 17-18).
Après la lecture du tableau t, on le parcourt et on fait un test sur la composante note (ligne 22). Si elle est supérieure ou égale à 10, on affiche les deux autres composantes, à savoir le nom et le prénom (ligne 23).
Solution exercice 2
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct etudiant{
char nom[20];
char prenom[20];
int note;
};
int main()
{
struct etudiant t[100];
int n,i;
printf("Donner le nombre d'etudiants:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("donnez le nom, prenom et la note de l'etudiant %d:\n",i+1);
scanf("%s%s%d",t[i].nom,t[i].prenom,&t[i].note);
}
for(i=0;i<n;i++)
{
if(t[i].note>=10)
printf("%s %s\n",t[i].nom,t[i].prenom);
}
system("pause");
return 0;
}