Moyenne en langage c

Bonjour,

Je dois faire un programme qui demande à l'utilisateur un entier, l'affiche, et recommence tant
que l'entier saisi est positif ou nul. Le programme s'arrête dès que l'utilisateur entre un
entier strictement négatif. Et ensuite je dois faire en sorte qu'il calcule et affiche la moyenne des entiers positifs entrés (en ne tenant pas compte du dernier nombre entré).

J'ai fait mon programme mais je ne vois pas d'où vient mon erreur. :/

#include <stdio.h>

int main(){

int a, b, nombre;
float moyenne, compteur = 0.0;

printf("Saisissez un entier. \n");
scanf(" %d", &a);

while ((a >= 0) && (compteur >= 0.0))
{
compteur = compteur + 1;
b = a;
moyenne = a/compteur;
printf("Saisissez un entier. \n");
scanf(" %d", &a);

if ((a > 0) && (compteur == 1.0))
{
compteur = compteur + 1.0;
nombre = b + a;
moyenne = nombre/compteur;
}
else if ((a > 0) && (compteur >= 2.0))
{
compteur = compteur + 1.0;
b = nombre;
nombre = b + a;
moyenne = nombre/compteur;
}
}
printf("La moyenne des positifs entrés est %f. \n", moyenne);

return 0;}

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,

    Je te conseille d'utiliser double à la place de float.

    scanf(" %d", &a);
    Pas d'espace devant %d.

    A quoi sert ton compteur ?? Surtout qu'il est en float.
    Ton algorithme est bien trop compliqué.

    Grosso modo :

    N, Nb, Somme : Entier
    Somme : Reel
    N<-0
    Nb<-0
    Somme<-0
    TantQue N>=0

    Saisir N
    Si N>=0
    Afficher ...
    Nb<- ...
    Somme<- ...
    FinSi
    FinTantQue
    Afficher "Moyenne = ", ...

    A toi compléter les petits points.