IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Calcul de moyenne


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut Calcul de moyenne
    Bonjour à tous,

    je débute complètement en C et je bute depuis des jours sur une erreur qui est sûrement toute bête mais je ne sais plus trop quoi faire. Comme je suis super original je tente de faire un programme pour calculer mes moyennes. Pour l'instant mon programme doit seulement demander le nombre de notes ( ça marche ). Il doit demander ensuite les notes et les afficher et en faire la somme au fur et à mesure. Mais voilà, je n'arrive pas à comprendre pourquoi les 2 résultats affichés sont toujours 0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void ) {
    	float *liste_notes=NULL,somme = 0.0;
    	int nb_de_notes = 0, i;
    	printf("Nombre de notes\n");
    	scanf("%d", &nb_de_notes);
    	liste_notes=malloc(nb_de_notes*sizeof(float));
     
    	if(liste_notes == NULL )
    		exit(1);
     
    	for (i=0; i < nb_de_notes; i++)
    {
    		printf("Note? ");
    		scanf("%f",&liste_notes[i]);
    		somme = somme + liste_notes[i];
    		printf("[%f]\n",&liste_notes[i]);
    		printf("%f\n",&somme);
    }
    free(liste_notes);
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf("[%f]\n", &liste_notes[i]);
    printf("%f\n", &somme);
    Tu veux afficher un flottant mais passe un pointeur. Retire les & et tu devrais voir apparaître tes valeurs
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut
    J'ajoute que la réservation d'un vecteur de nb_de_notes de pointeurs sur des flottants ne m'apparaît pas necessaire .
    Pourquoi réserver de l'espace mémoire pour une donnée qui ,une fois utilisée ,disparaît aussitôt ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
            float note,somme = 0.0;
     
     
    	for (i=0; i < nb_de_notes; i++)
    {
    		printf("Note? ");
    		scanf("%f",&note);
    		somme = somme + note;
    		printf("[%f]\n",&note);
    		printf("%f\n",&somme);
    }
    me semble amplement suffisant.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut
    Thank you Bousk, it worked !

    @exe2bin: elle ne disparaissait que parce que mon programme n'était pas encore fini. Le voici presque fini:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void ) {
    	float *liste_notes=NULL, somme = 0.0, moyenne=0.0;
    	int nb_de_notes = 0, i;
    	printf("Nombre de notes\n");
    	scanf("%d", &nb_de_notes);
    	liste_notes=malloc(nb_de_notes*sizeof(float));
     
    	if(liste_notes == NULL )
    		exit(1);
     
    	for (i=0; i < nb_de_notes; i++)
    {		
    		printf("Note? ");
    		scanf("%f",&liste_notes[i]);
    		if (liste_notes[i] > 20) 
    			printf("Erreur, note non prise en compte\n");
    		else if (liste_notes[i] < 0) 
    			printf("Erreur, note non prise en compte\n");
    		else 
         		somme = somme + liste_notes[i];
    }
     
    	moyenne = somme / nb_de_notes;
    	printf("moyenne:""%f\n",moyenne);
    	for (i=0; i < nb_de_notes; i++)
    	{printf("%f\n",liste_notes[i]);}
     
    free(liste_notes);
     
    }

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mai 2016
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 313
    Par défaut
    Si des notes ne sont pas prises en compte, le calcul de moyenne ne sera pas correct.
    Il faut diviser la somme par le nombre de notes prises en compte, qui peut être inférieur à nb_de_notes.

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 12
    Par défaut
    Il suffit de décrémenter i dans les 2 cas d'erreur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] problème de calcul de moyenne
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/04/2006, 17h13
  2. [Oracle] Calcul de moyenne par module
    Par naazih dans le forum Langage SQL
    Réponses: 14
    Dernier message: 27/04/2006, 14h38
  3. Programmation Shell avec Red Hat Calcul de moyenne
    Par jcpoulard dans le forum Linux
    Réponses: 3
    Dernier message: 22/02/2006, 22h08
  4. methode qui calcul une moyenne du traffic
    Par siry dans le forum Développement
    Réponses: 7
    Dernier message: 05/05/2005, 17h16
  5. calculer une moyenne avec une requete externe
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo