From bc44b44f2995ab3617edacf69a2301defe836414 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Wed, 3 Feb 2016 10:24:35 +0100 Subject: [PATCH] TP2 E5 --- TP2/E2.c | 4 +++ TP2/E5.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++ TP2/Makefile | 3 ++ 3 files changed, 88 insertions(+) create mode 100644 TP2/E5.c diff --git a/TP2/E2.c b/TP2/E2.c index 39b251e..9c3d740 100644 --- a/TP2/E2.c +++ b/TP2/E2.c @@ -41,6 +41,10 @@ int main() { printf("%d, ", Tp[i]); } printf("\n"); + + // Ici j'ai crée un deuxième tableau Tp au lieu d'insérer X directement dans T + // On aurait aussi pu parcourir le tableau T à l'envers et décaler les éléments + // vers la droite jusqu'à k. return 0; } diff --git a/TP2/E5.c b/TP2/E5.c new file mode 100644 index 0000000..b9917d5 --- /dev/null +++ b/TP2/E5.c @@ -0,0 +1,81 @@ +/* Structures et tableaux */ + +#include +#include + +#define M 50 // Maximum d'étudiants stockables +#define NB_UE 6 // Maximum d'étudiants stockables + + +struct PEIP2 { + char nom[26], prenom[26]; + long int nip; + float notes[NB_UE]; +} etudiant[M]; + +float coeffs[NB_UE] = {1, 2, 1, 2, 3, 1}; + +void saisie(int i) { + printf("Nom : "); + scanf("%s", &etudiant[i].nom); + printf("Prénom : "); + scanf("%s", &etudiant[i].prenom); + printf("NIP : "); + scanf("%ld", &etudiant[i].nip); + int iu; + for (iu = 0; iu < NB_UE; iu++) { + printf("Note dans l'UE %i (coeff %f) :", iu+1, coeffs[iu]); + scanf("%f", &etudiant[i].notes[iu]); + } + printf("\n"); +} + +void lire(int i) { + printf("Nom, Prénom : %s, %s\n", etudiant[i].nom, etudiant[i].prenom); + printf("NIP : %ld\n", etudiant[i].nip); + int iu; + double somme = 0; + double sommeCoeffs = 0; + for (iu = 0; iu < NB_UE; iu++) { + somme += etudiant[i].notes[iu]*coeffs[iu]; + sommeCoeffs += coeffs[iu]; + printf("Note dans l'UE %i (coeff %f) : %f\n", iu+1, coeffs[iu], etudiant[i].notes[iu]); + } + printf("Moyenne générale : %f\n", somme / sommeCoeffs); + printf("\n"); +} + + +int main() { + + int i, nb; + printf("Nombre d'étudiants : "); + scanf("%d", &nb); + if (nb < 1 || nb > M) { + printf("Le programme ne peut stocker que jusque %i étudiants.\n", M); + return 2; + } + + printf("-- Saisie des étudiants\n"); + for (i = 0; i < nb; ++i) saisie(i); + + printf("-- Lecture des étudiants\n"); + for (i = 0; i < nb; ++i) lire(i); + + + printf("-- Moyennes des UE\n"); + int iu; + double sommeTotale = 0; + double somme; + for (iu = 0; iu < NB_UE; iu++) { + somme = 0; + for (i = 0; i < nb; ++i) { + somme += etudiant[i].notes[iu]; + } + printf("Moyenne de l'UE %i (coeff %f): %f\n", iu+1, coeffs[iu], somme/nb); + sommeTotale += somme*coeffs[iu]; + } + printf("Moyenne générale promo : %f\n", sommeTotale / NB_UE / nb); + + return 0; +} diff --git a/TP2/Makefile b/TP2/Makefile index 0a9a19b..0870721 100644 --- a/TP2/Makefile +++ b/TP2/Makefile @@ -9,6 +9,9 @@ E1-3.exe: E1-3.c E2.exe: E2.c gcc E2.c -o E2.exe +E5.exe: E5.c + gcc E5.c -o E5.exe + .PHONY: all clean clean: