Erreur : Algo2.exe a cessé de fonctionné

Résolu/Fermé
Tydher Messages postés 123 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 17 mai 2011 - 18 sept. 2010 à 16:13
Tydher Messages postés 123 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 17 mai 2011 - 21 sept. 2010 à 21:25
Bonjour à tous.

Le but de mon algo (nommé Algo2.exe) en C est de saisir une suite de valeur et d'afficher
le plus petit,
le nombre de valeurs nulle
et la moyenne des nombres positifs

Cependant, lors de l'exécution, j'ai un message me disant que l'algo a arrêter de fonctionner. J'arrive a saisir les valeurs mais aucun résultats ne s'affiche, seul la fenetre avec message d'erreur apparait.

Voila le code :

//EAP de saisir les valeurs d'une suite d'entiers et d'afficher :
// le plus petit nombre
// le nombre de valeur nulle
// la moyenne des nombres positifs
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main()
{
int nbelem, min, total, moyenne, j, valnulle, i, val; // j est un compteur de nombre positifs

//Saisi du nombre d'elements de la suite
printf("Saisir le nombre d'elements \n");
scanf("%d", &nbelem);

//initialisation
min = 0;
total = 0;
j = 0;
valnulle = 0;

//Pour i de 1 a nombre d'elements faire ...
for(i=1;i<=nbelem;i++)
{

//Saisir une valeur
printf("Saisir une valeur \n");
scanf("%d", &val);

//Si elle est inferieur a 0
if(val < 0)
{

// Si elle est inferieur a min
if(val<min)
{
min = val;
}
}

//Si elle est egal a 0
if(val == 0)
{
valnulle = valnulle + 1;
}

// Si elle est superieur a 0
if(val > 0 )
{
total = total + val;
j = j + 1;
}
}

//affichage des resultats
if(min=0)
{
printf("Il n'y a pas de nombre negatif");
}
if(j=0)
{
printf("Aucune valeur positive");
}
else
{
moyenne = total / j;
}
printf("la valeur minimum est %d , le nombre de nulle est %d , la moyenne est %d", min, valnulle, moyenne);
system("pause");
}

Voila l'erreur en question :
http://imageshack.com/f/bgerreuryj

Je suis a votre disposition en cas de question.

Merci d'avance !

2 réponses

ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 338
Modifié par ghuysmans99 le 19/09/2010 à 00:52
Division par zéro : il manque un = dans ta condition ... Là tu affectes j à 0, et vu que c'est faux, il va dans le else et divise avec la nouvelle valeur de j.
if(j==0)  
  printf("Aucune valeur positive");  
else  
  moyenne = total / j;  
On voit quand même pas ça souvent ...

Pour le reste de ton programme :
- Quand tu incrémentes une variable, fais variable++; c'est plus clair.
- Quand tu fais une opération telle que variable=variable*2;, fais variable*=2;, pour la même raison.
- Indente ton code : là c'est un tout petit programme, mais prends déjà les bonnes habitudes sinon tu te perdras vite dans des programmes plus volumineux ...
Google is your best friend
VB.NET is good ... VB6 is better !
0
Tydher Messages postés 123 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 17 mai 2011 6
21 sept. 2010 à 21:25
Merci beaucoup de ta réponse, sa marche impec, avec les modifications précisées.
0