Je suis en train de faire un programme qui fait office de "classeur" scolaires, ou l'on met les notes que l'on a eu dans chaque matière. Au début il y a l'option entre Charger une sauvegarde et Faire un nouveau classeur, eh bien il faut que vous mettez 1 = Charger une sauvegarde.
Bon voilà je vous pose le code et après j'explique mon problème
Calculateur de moyenne.c
/*
Auteur : -MeteZ- (sanco95@hotmail.com)
Description: Pour calculer vos moyennes dans tous les sens
Dans la version 1.1 (celle ci), il est possible de charger et d'enregistrer ses données
*/
#include <stdio.h> #include <stdlib.h> #include "Calculateur de moyenne.h"
int main(int argc, char *argv[]) { int nombreMatieres, choixCharger;
printf("\tCalculateur de moyenne scolaire 1.1\n(Le prog. n'accepte que les nombres entiers)"); /* On stock le nombre de moyennes qu'à l'utilisateur */
printf("\n1. Charger une sauvegarde"); printf("\n2. Faire un nouveau classeur"); printf("\nTapez votre choix : ");
scanf("%d",&choixCharger);
if(choixCharger == 2){ printf("\nCombien avez vous de matiere au total : ");
scanf("%d",&nombreMatieres);
int boucle, boucleNotes;
for(boucle=0; boucle<nombreMatieres; boucle++){ /* Pour chaque matières, on demande un nom */ printf("\nNom de la matiere %ld : ",(boucle+1));
scanf("%s",moyennes[boucle].nom); /* Au nom de la matière est associé un nombre de notes */ printf("Combien avez-vous eu de notes en %s : ", moyennes[boucle].nom);
scanf("%d",&moyennes[boucle].nombreNotes);
/* On connaît le nombre de notes dans la matière, on peut demander leurs notation et
coefficient */ for(boucleNotes=0; boucleNotes<moyennes[boucle].nombreNotes; boucleNotes++){ printf("En %s, votre note %ld est de (sur 20): ",moyennes[boucle].nom, (boucleNotes+1));
scanf("%ld",¬es[boucle].notes[boucleNotes]); printf("Quel est son coefficient : ");
scanf("%d",¬es[boucle].coefficient[boucleNotes]); } } } printf("\nVoila, toutes vos notes ont ete charge !");
/* Si quitterMenu != 0, alors la boucle est terminé, l'utilisateur quitte */ int quitterMenu = 0; while(!quitterMenu){ int choixMenu = 0;
/* Menu : l'utilisateur choisi sa fonction */ printf("\n\n1. Voir toutes mes notes dans une matiere"); printf("\n2. Calculer une moyenne dans une matiere"); printf("\n3. Calculer la moyenne generale"); printf("\n4. Voir toutes mes notes"); printf("\n5. Sauvegarder mes notes"); printf("\n6. Quitter le programme"); printf("\nTapez votre choix : ");
if(choixMenu == 2){ char matiereVoulu[MAX_TABLEAU]; printf("Tapez le nom de la matiere dont vous voulez avoir la moyenne : ");
scanf("%s",&matiereVoulu); printf("Vous avez %lf",calculerMoyenne(&moyennes, ¬es, matiereVoulu)); }
if(choixMenu == 3){ int boucle; double moyenneGeneral = 0;
void voirNotesMatiere(Moyenne moyennes[], Notes notes[], int nombreMatieres) { char matiereVoulu[MAX_TABLEAU]; printf("Tapez le nom de la matiere dont vous voulez voir les notes : ");
scanf("%s",&matiereVoulu); int boucle, boucle2; for(boucle=0; boucle<nombreMatieres; boucle++){ if((strcmp(moyennes[boucle].nom, matiereVoulu)) == 0){ for(boucle2=0; boucle2<moyennes[boucle].nombreNotes; boucle2++){ printf("\nVous avez eu un %ld coef.%d en %s",notes[boucle].notes[boucle2],
notes[boucle].coefficient[boucle2],
moyennes[boucle].nom); } } } }
void voirNotes(Moyenne moyennes[], Notes notes[], int nombreMatieres) { int boucle, boucle2; for(boucle=0; boucle<nombreMatieres; boucle++){ for(boucle2=0; boucle2<moyennes[boucle].nombreNotes; boucle2++){ printf("\nVous avez eu un %ld coef.%d en %s",notes[boucle].notes[boucle2],
notes[boucle].coefficient[boucle2],
moyennes[boucle].nom); } } }
Compilez, lancez, Charger une sauvegarde. Là tout se passe bien.
Mais il y a un problème pour certains moyennes lorsqu'on veut calculer la moyenne générale (des valeurs comme #IN00).
Lorsqu'on change de place les lignes dans le fichier sauvegarder.txt, on voie qu'à l'execution du programme ce ne sont plus les mêmes calculs qui ont des problèmes mais d'autres :s
Apparement c'est un problème d'allocation dynamique mais j'y arrive pas avec les structures, tableaux de structures, tableaux de valeurs de structures ...
[C] Probleme calcul
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.