0
votes

Écrivez un programme C qui lit 5 chiffres et compte le nombre de nombres positifs et imprimez la moyenne de toutes les valeurs positives.

J'ai saisi le premier numéro: 14, le deuxième numéro: 63, le troisième numéro: 78, le quatrième numéro: 45, le cinquième numéro: 21 et j'ai eu 44,00 au lieu de 44,20. Où est-ce que je me suis trompé?

#include<stdio.h>
int main() {
int i,numbers[5],total=0,count=0;
float average ;
printf("\nInput the first number:");
scanf("%d", &numbers[0]);
printf("\nInput the second number:");
scanf("%d", &numbers[1]);
printf("\nInput the third number:");
scanf("%d", &numbers[2]);
printf("\nInput the fourth number:");
scanf("%d", &numbers[3]);
printf("\nInput the fifth number:");
scanf("%d", &numbers[4]);
for (i = 0; i < 5; i++) {
    if (numbers[i] > 0) {
        count++;
        total += numbers[i];
    }
}
average = total / count;
printf("\n The number of positive numbers:%d\n", count);
printf("\n The average of all positive value is %.2f\n", average);
return 0;
 }

c

4 commentaires

Essayez cela à la place: Moyenne = ((flotteur) Total / Nombre) .


Ici (Total / Count) , c'est une division entière qui produit un résultat entier.


utiliser ((flotteur) total / compte)


Que devrait-il arriver si comptent == 0 ?


4 Réponses :


1
votes

dans votre moyenne = total / compte; , vous faites des entiers entier entier, qui retournera un résultat entier.

Utilisez l'opérateur de distribution pour utiliser temporairement l'une de vos variables flotter.

comme ceci: xxx


0 commentaires

0
votes

Voici un code plus simple.

average=total/(float)


0 commentaires

2
votes

Bien qu'il n'y ait rien de mal avec des lignes de code répétitives, ce n'est certainement pas la littérature. Si vous êtes confronté à faire la même chose 5 fois et que la seule chose à changer est un index ou deux dans la sortie - vous devriez être en boucle. Ici, vous pouvez élargir la boucle que vous devez inclure l'invite à saisir et la manipulation de la somme des nombres positifs, et elle peut toutes être effectuée sans avoir à stocker les valeurs d'entrée dans un tableau.

Tout ce que vous devez entretenir dans La boucle est la somme code> des valeurs positives. Après avoir quitté la boucle, vous pouvez calculer la moyenne basée sur le nombre d'entrées de valeurs positives. P>

mettre à totalement, vous pouvez faire quelque chose de similaire à: p>

$ ./bin/avgposnum
enter no. 1: -10
enter no. 2: 10
enter no. 3: 0
enter no. 4: 20
enter no. 5: -20

The number of positive numbers       : 2
The average of all positive value is : 15.00


0 commentaires

0
votes

total / compte est une division entière. Le reste du quotient est perdu avant que l'affectation au float objet moyenne .

Au lieu de la place, effectuez une division de point flottante. << p>

En général, le code devrait éviter les moulages. Utilisez-les avec parcimonie. La coulée peut aussi masquer facilement les problèmes.

considère que plus doux signifie que, comme l'introduction d'une constante de point flottante dans le calcul. xxx

ici est également peu besoin de la Smallish float VERSUS CORE DE TYPE DE TYPE DE VOYAGE DE TRAVAIL DE CHEVURE Double . Différents valeurs int ne sauveront pas exactement dans un float .

Notez que printf ("%. 2f \ n", moyenne) ; convertit moyenne sur un double avant de le transmettre à printf () .

montre pour / 0 xxx


0 commentaires