[C] Erreur que je trouve pas :D

Erreur que je trouve pas :D [C] - C - Programmation

Marsh Posté le 17-09-2008 à 19:14:01    

:hello:  
 
Voila, moyenne ne renvoit pas du tout la moyenne :D Mais je comprend pas pourquoi ..

Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   int nombre,num,indent;
  5.   int min=2147483647; //Chiffre maximum supporté par le type int, c'est pas très propre mais bon..
  6.   int max=0;
  7.   float moyenne=0;
  8.   int somme=0;
  9.   printf("Combien de nombres? " );
  10.   scanf("%d", &nombre);
  11.  
  12.   for (indent=nombre;indent>0;indent--)
  13.   {
  14.     nombre--;
  15.     printf("Entrer le nombre : " );
  16.     scanf("%d", &num);
  17.     somme = somme + num;
  18.     if (min > num)
  19.     {
  20.       min = num;
  21.     }
  22.     if (max < num)
  23.     {
  24.       max = num;
  25.     }
  26.   }
  27.   //printf("Somme = %d\n", somme);
  28.   moyenne = (float)somme / (float)nombre;
  29.   printf("Minimum = %d\n", min);
  30.   printf("Maximum = %d\n", max);
  31.   printf("Moyenne = %f\n", moyenne);
  32. }


 
Merci d'avance  :jap:

Reply

Marsh Posté le 17-09-2008 à 19:14:01   

Reply

Marsh Posté le 17-09-2008 à 19:30:12    

bon j'ai un deuxieme exercice pour vous [:kbchris]
 
l'objectif est de calculer le nombre de mot dans la phrase (en calculant juste le nombre d'espace, on se tape des apostrophe ..etc..)
 
malheureusement, ben...ca marche po :d
 

Code :
  1. {
  2.   char buffer[500];
  3.   char c;
  4.   int i;
  5.   int nombreDeMots;
  6.   //On scan la chaine de caractère
  7.   /*for (i=0 , c='\0'; c!= '$' && i < 500-1 ; ++i)
  8.   {
  9.     printf("Quel est votre phrase ?\n" );
  10.     scanf("%c", &c);
  11.     buffer[i] = c;
  12.   }*/
  13.   printf("Quel est votre phrase?\n" );
  14.   scanf("%s", buffer);
  15.   //On compte les mots
  16.   for (i=0, nombreDeMots =1; buffer[i] != '$' ; i++)
  17.   {
  18.     if (buffer[i]==' ' && i > 0 && buffer[i-1] != ' ')
  19.     {
  20.       nombreDeMots++;
  21.     }
  22.   }
  23.   printf("Il y a %d mot(s) dans votre phrase\n", nombreDeMots);
  24. }


Message édité par boblenain200 le 17-09-2008 à 19:30:31
Reply

Marsh Posté le 17-09-2008 à 19:50:04    

Mouaif, erreurs classiques. Pour le 1, regarde ta ligne 14. Pour le 2, le format %s de scanf() s'arrête de lire au premier espace, du coup ta boucle n'en trouvera jamais.


Message édité par tpierron le 17-09-2008 à 19:51:37
Reply

Marsh Posté le 17-09-2008 à 20:16:31    

Pour le 1 , merci :jap: (jme hais sur ce coup :o)
 
POur le 2, j'ai çà mais c'est pas très beau ..
 

Code :
  1. {
  2.   char buffer[BUFSIZ];
  3.   char c;
  4.   int i;
  5.   int nombreDeMots;
  6.   //On scan la chaine de caractère
  7.   for (i=0 , c='\0'; c!= '$' && i < BUFSIZ -  ; ++i)
  8.   {
  9.     printf("Quel est votre phrase ?\n" );
  10.     scanf("%c", &c);
  11.     buffer[i] = c;
  12.   }
  13.   //On compte les mots
  14.   for (i=0, nombreDeMots =1; buffer[i] != '$' ; i++)
  15.   {
  16.     if (buffer[i]==' ' && i > 0 && buffer[i-1] != ' ')
  17.     {
  18.       nombreDeMots++;
  19.     }
  20.   }
  21.   printf("Il y a %d mot(s) dans votre phrase\n", nombreDeMots);
  22. }

Reply

Marsh Posté le 18-09-2008 à 08:15:32    

Tu devrais t'intéresser à fgets, celà pourrait résoudre ton problème "esthétique"...

Reply

Marsh Posté le 01-10-2008 à 22:24:54    

fgets ou read

Reply

Marsh Posté le 01-10-2008 à 23:02:00    

fgets pour les fichiers textes, marche très bien avec l'entrée standart stdin.

Reply

Marsh Posté le 02-10-2008 à 11:04:19    

Je regarderais fgets :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed