[language C] mon programe s'éteint

Résolu
freuh Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -  
freuh Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -
bonjour,
voila je débute réelement en programmation ainsi je lis un livre proposant des cours et des exercices ainsi j'ai fais ceci:


#include <stdio.h>
main ()
{ int val ;
int nb_neg = 0 , nb_pos = 0 ;
int somme_pos = 0 ,
somme_neg = 0 ;
float moyenne ;

do
{ printf ("un entier : ") ;
scanf ("%d", &val) ;
if (val > 0)
{ somme_pos = somme_pos + val ;
nb_pos = nb_pos + 1 ;
}
if (val < 0)
{ somme_neg = somme_neg + val ;
nb_neg = nb_neg + 1 ;
}
}
while (val != 0) ;

if ( nb_pos != 0)
{moyenne = somme_pos ;
moyenne = moyenne / nb_pos ;
printf ("moyenne des valeurs positives : %f \n", moyenne) ;
}
else printf ("aucune valeur positive\n") ;
if ( nb_neg != 0)
{moyenne = somme_neg ;
moyenne = moyenne / nb_neg ;
printf ("moyenne des valeurs negative : %f \n", moyenne) ;
}
else printf ("aucune valeur negative\n") ;

voila le résultat devrait me donner au moin deux phrases, or malheureusement mon programme s'étein une fois les conditions rempli , rien ne s'affiche et il s'éteint...
j'en est fais d'autre , voir plus imple, et le résultat est le même , il doit y avoir une manipe que je ne trouve .
merci de m'éclairer...

4 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

system("PAUSE") permettra à ton programme d'être compiler que sous Windows
pour rendre ton code portable sur d'autres platformes utiliser plutôt getchar()
#include <stdio.h>
int main ()
{
  int val;
  int nb_neg = 0, nb_pos = 0;
  int somme_pos = 0, somme_neg = 0;
  float moyenne;

  do{
      printf ("un entier : ");
      scanf ("%d", &val);
      if (val > 0){
          somme_pos = somme_pos + val;
          nb_pos = nb_pos + 1;
      }
      if (val < 0){
          somme_neg = somme_neg + val;
          nb_neg = nb_neg + 1;
      }
  } while (val != 0);
  getchar();

  if (nb_pos != 0){
      moyenne = somme_pos;
      moyenne = moyenne / nb_pos;
      printf ("moyenne des valeurs positives : %f \n", moyenne);
  } else
    printf ("aucune valeur positive\n");
  if (nb_neg != 0) {
      moyenne = somme_neg;
      moyenne = moyenne / nb_neg;
      printf ("moyenne des valeurs negative : %f \n", moyenne);
  } else
    printf ("aucune valeur negative\n");
  printf("Appuyez sur une touche pour quitter...\n");
  getchar();
  return 0;
}
1
olivbarb Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   29
 
rajoute a la fin de ton programme "system("PAUSE");" cela aura pour effet de "figer" ta fenetre jusqu'a ce que tu appuies sur une touche
0
skyner Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
C'est normal car sous windows la fenetre de commande se ferme instantanement apres l'execution de ton programme et il faut donc que tu puisse voir tes résultats.

Pour cela tu rajoute simplement à la fin de ta fonction main la ligne suivante :

system("pause")

Ainsi on te demandera d'appuyer sur une touche à la fin de ton programme pour le quitter et tu pourras donc lire tes résultats.
0
freuh Messages postés 36 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour vos réponces !!!
j'aurais maintenant juste un renseignement sur le getchar :
"comment l'utilise t on?"
en gros c'est un avans et un aprés , ce que l'on veut afficher a l'écrant?
merci encore bonne soirée
0