[Programmation en c]

winfa680 -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour les amis ;
J'ai écris en langage c un programme qui est supposé me permettre de calculer la moyenne de certaines notes . Le nombre de notes n'étant pas connu à l'avance , la saisie d'une note négative doit merquer la fin des notes .
Voici ce que j'ai écris:
#include<stdio.h>
main()
{int i
float n
float som
float moy;
printf ("je vais vous calculer votre moyenne ");
i=0;
som=0;
do
{printf ("donnez une note");
scanf ("%f", &n);
som+= n ;
moy= som/i;
i++;
}
while(n>0);
printf ("votre moyenne :%f\n",moy);
}

Celà pourrait il marcher?

Merci d'avance pour la réponse.
Configuration: windos

4 réponses

  1. gaby10 Messages postés 445 Date d'inscription   Statut Membre Dernière intervention   58
     
    Alerte : 
    lorsque tu initialise i=0,le compilateur va generer une erreur des que tu vas entrer la 1ere note car som/0;
    Je pense que la solution qui pourrait fonctionner est la suivante:
    #include<stdio.h>
    int main(){
         int i=1; float n,moy,som=0;
         do 
       {printf ("donnez une note");  
       scanf ("%f", &n); 
       som+= n ; 
       i=i+1;}
       while(n<0)/*si n vaut 0 il ya pas de probleme, mais si n vaut -1 par exemple, lá il y a casse.*/
    //maintemant je calcul ma moyenne
      moy=som div i; 
      printf("%f",moy);
      return 1;//ceci á de int avant main().
         }


    Essaie et tiens moi informe si sa marche.
    bon apres midi
    0
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Salut.
    la solution de gaby ne fonctionne pas, il faut initialisé i à 0.
    Sinon, si tu n'a qu'une note, tu reviens à la diviser par deux
    0
  3. gaby10 Messages postés 445 Date d'inscription   Statut Membre Dernière intervention   58
     
    t'as raison mais si je fais ceci
    .do{
    .......i++;}
    
    ou encore je ne modifie qu'apres la boucle do:
    #include...............moy=som div (i-1);
    0
  4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Il ne faut faire la division que que tout à la fin sinon le résultat est faux !
    #include <stdlib.h>
    #include <stdio.h>
    
    int main(){
      int n; // le nombre de note saisies
      float s=0; // la somme des notes
      float tmp; // la saisie courante
      for(n=1;;++n){
         scanf ("%f", &tmp); 
         if (tmp<0) break;
         s+=tmp;
      }
      printf("La moyenne arithmétique vaut : %lf\n",s/n);
      return 0;
    }

    Bonne chance
    0