[Programmation en c]

Fermé
winfa680 - 13 mars 2006 à 16:04
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 13 mars 2006 à 19:46
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.
A voir également:

4 réponses

gaby10 Messages postés 445 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 3 février 2013 57
13 mars 2006 à 16:45
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
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
13 mars 2006 à 17:33
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
gaby10 Messages postés 445 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 3 février 2013 57
13 mars 2006 à 17:45
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
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
13 mars 2006 à 19:46
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