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;
}
4 Réponses :
dans votre Utilisez l'opérateur de distribution pour utiliser temporairement l'une de vos variables flotter. p> comme ceci: p> moyenne = total / compte; code>, vous faites des entiers entier entier, qui retournera un résultat entier.
Voici un code plus simple.
average=total/(float)
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 mettre à totalement, vous pouvez faire quelque chose de similaire à: p> 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> $ ./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
Au lieu de la place, effectuez une division de point flottante. P> << 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. P> considère que plus doux signifie que, comme l'introduction d'une constante de point flottante dans le calcul. P> ici est également peu besoin de la Smallish Notez que montre pour total / compte code> est une division entière. Le reste du quotient est perdu avant que l'affectation au float code> objet moyenne code>. float code> VERSUS CORE DE TYPE DE TYPE DE VOYAGE DE TRAVAIL DE CHEVURE Double code>. Différents valeurs int code> ne sauveront pas exactement dans un float code>. P> printf ("%. 2f \ n", moyenne) ; code> convertit moyenne code> sur un double avant de le transmettre à printf () code>. p> / 0 code > p>
Essayez cela à la place:
Moyenne = ((flotteur) Total / Nombre) Code>.Ici
(Total / Count) Code>, c'est une division entière qui produit un résultat entier.utiliser ((flotteur) total / compte)
Que devrait-il arriver si
comptent == 0 code>?