Probleme de calcul d'une moyenne

Résolu
jejehero Messages postés 5 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 3 novembre 2006 - 15 oct. 2006 à 12:12
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 - 17 oct. 2006 à 06:55
Salut,
J'ai commence la programmation il y a quelques mois et là je veux faire un calcul de moyenne, voici le programme :

#include <stdio.h>
#include <stdlib.h>


int main()
{
    long coeftotal=0;
    long total=0;
    long coef=0;
    long nombreentre=0;
    long arreter=0;
    printf("Calcul d'une moyenne");
    while (arreter==0)
    {
        printf("\n\n\nNombre :");
        scanf("%lf", &nombreentre);
        printf("\n\nCoefficient(si aucun alors mettre 1) :");
        scanf("%lf", &coef);
        nombreentre *= coef;
        coeftotal += coef;
        total += nombreentre;
        total /= coeftotal;
        printf("\nMoyenne = %lf", total);
        coef=0;
        nombreentre=0;
    }
 return 0;
}
Probleme : quand je passe les %lf à %ld(décimal à entier) il veut bien me les calculer par contre avec %lf il veut pas quand il calcule il m'arrête le programme!!! Pourquoi? Comment faire ce calcul avec les décimals?

Merci d'avance de vos solutions


PS : Je travaille avec le langage C




Only C/C++. Longue vie au C/C++

.

8 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
15 oct. 2006 à 14:59
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])

    float note;
    float moyenne = 0;
    int iNbr = 0;
   
    do
    {
        printf("Note %i : ", iNbr+1);
        scanf("%f", &note);
        moyenne += note;
        iNbr++;
   } while(note > 0.f);
   moyenne -= note;
   iNbr--;
  
    moyenne /= (float)iNbr;
    printf("La moyenne est de : %f\n", moyenne);
    system("PAUSE");   
   return 0;
}

ULARGE_INTEGERJokyQi=QI("Joky"
1
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
15 oct. 2006 à 13:25
Et bien au lieu d'utiliser des long utilises des floats

ULARGE_INTEGERJokyQi=QI("Joky"
0
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010
15 oct. 2006 à 14:11
int a=5;
int b=3;
float c;

c=(float)a/b;
0
niketou Messages postés 295 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 6 décembre 2010
15 oct. 2006 à 15:39
Hey, moi aussi j'ai droit a un truc vert lol.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
15 oct. 2006 à 15:48
Ben fouille dans ton nez, tu trouveras certainement un truc vert :)

ULARGE_INTEGERJokyQi=QI("Joky"
0
jejehero Messages postés 5 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 3 novembre 2006
15 oct. 2006 à 15:51
Ah c'est dégoutant!!! Au fait merci pour les reponses malheureusement NIKETOU ta réponse ne traitait pas de la saisie de l'utilisateur ce qui je m'en suis rendu compte etait mon probleme merci quand même!!!

Only C++. Longue vie au C++
.
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
17 oct. 2006 à 06:13
Bonjour,

joky, qu'est ce qui se passe si je rentre, avec mes gros doigts, une lettre au lieu d'un chiffre ???
pour lire une entrée, perso :  fgets

Matt...
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
17 oct. 2006 à 06:55
Oui c'est vrai qu'on doit coder en considérant l'utilisateur comme un gros naze
J'avais zappé ce passage
Mais tes gros doigts au pire, tu peux les mettre à disposition de niketou :)

ULARGE_INTEGERJokyQi=QI("Joky"
0
Rejoignez-nous