[language C] mon programe s'éteint

Résolu/Fermé
freuh Messages postés 36 Date d'inscription lundi 6 août 2007 Statut Membre Dernière intervention 1 mars 2009 - 6 août 2007 à 21:10
freuh Messages postés 36 Date d'inscription lundi 6 août 2007 Statut Membre Dernière intervention 1 mars 2009 - 6 août 2007 à 22:39
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
6 août 2007 à 22:20
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 dimanche 5 août 2007 Statut Membre Dernière intervention 10 mars 2013 29
6 août 2007 à 21:17
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 lundi 6 août 2007 Statut Membre Dernière intervention 17 avril 2008
6 août 2007 à 21:18
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 lundi 6 août 2007 Statut Membre Dernière intervention 1 mars 2009
6 août 2007 à 22:39
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