1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void transform(char *nom)
{
int depart = strlen(nom);
int i;
for (i = depart; i < 12; i++)
{
nom[i] = ' ';
}
nom[i] = '\0';
}
void saisie (void)//la renommer en creation
{
int nbretudiant=0, i=0,testfich=0;// testfich permet de tester si il faut créer le fichier ou non;
char **nom;
char **note;
printf("Combien d'etudiants ? ");
scanf("%d", &nbretudiant);
nom = malloc(nbretudiant * sizeof(char**));
note = malloc(nbretudiant * sizeof(char**));
for ( i = 0; i < nbretudiant; i++)
{
nom[i] = malloc(sizeof(char *) * 100);
note[i] = malloc(sizeof(char *) * 10);
printf("Nom de l'eleve numero %d ? \n", i + 1);
scanf("%s", &nom[i][0]);
transform(&nom[i][0]);
printf("Note de l'eleve numero %d ? \n",i + 1);
scanf("%s", ¬e[i][0]);
}
creationFichier(nom, note, nbretudiant);
for (i=0; i < nbretudiant; i++){
free(nom[i]);
free(note[i]);
}
relecture(nbretudiant);//appel de la fonction lecture
free(nom);
free(note);
}
void creationFichier(char **nom, char** note, int nbrEtudiants){
FILE *f = fopen("Note.txt","a");//on ouvre en mode ajout pour ajouter les noms des personnes
int i = 0;
for (i=0; i < nbrEtudiants; i++){
fprintf(f, "%s %s\n", nom[i], note[i]);
}
fclose(f);
}
//*******************************************************************
// Troisième partie : Fonction relecture
// Lire et afficher le contenu du fichier
//*********************************************************************
int relecture(int n){
FILE* f = NULL;
char tnom[11];//tableau de nom
char tnote[6];//tableau de note
f = fopen("Note.txt", "r"); //ouverture du fichier en mode lecture
float vnote;
float vn;
float vmoyenne;
int k; //détermine si il faut afficher en tête pour note < a 10
k = 0;
vnote=0.0;
vn=0.0;
vmoyenne=0.0;
printf("\n\n");//saut de ligne
while (!feof(f))//tant qu'il n'est pas vide faire
{
fscanf(f, "%s\n", tnom);//on récupère le nom
fscanf(f, "%s\n", tnote);//on récupère la note
vnote = atof(tnote);//on convertie la valeur de la note
if (vnote <10){
//printf("\nNOM ET NOTE < A 10/20 \n\n");
printf("NOM : %s | NOTE : %s \n",tnom,tnote);
k++;//compte le nbr de note < 10 un plus pr te démarquer des autres
}
vn = vn + vnote;//on additionne toute les notes
}
vmoyenne = vn/n;//on calcul la moyenne
printf("\n\nIL Y A %d NOTE < 10/20.\n\n",k);
printf("\n\nLA MOYENNE DES NOTES EST : %0.02f (arrondie a 2 chiffres apres la virgule) \n\n",vmoyenne);//on arrondi a 2chiffre aprés la virgule
fclose(f);//fermeture du fichier
return 0;
}
//*******************************************************************
// FONCTION PRINCIPAL DU programme
//*********************************************************************
int main(int argc, char *argv[])
{
//on Affiche l'en tête
printf("\n ******************************************\n"
"* NOMELEVE *\n"
"* CLASSE *\n"
"******************************************\n\n");
saisie();
system("PAUSE");
return 0;
} |
Partager