En moyenne, max et min programme en C
Donc je code en C, et j'ai besoin de venir avec un code qui va prendre la n des nombres de l'utilisateur, et à trouver leur minimum, maximum, moyenne, et la somme des carrés de leurs valeurs. Pour l'instant j'ai la moyenne et la somme des carrés de la partie, mais le minimum et le maximum est de mordre.
Garder à l'esprit que je suis très rudimentaire, et je n'ai pas atteint les tableaux encore. Tout ce que je sais sont des opérateurs logiques, fonctions, boucles, et l'utilisation de la stdlib.h, math.h et stdio.h les bibliothèques.
C'est ce que j'ai jusqu'à présent.
La fonction moyenne m'a donné beaucoup de problèmes quand j'ai essayé de mettre float et double lors de la compilation, donc, de le multiplier par un 1.0 fixe. J'ai tout juste le minimum et le maximum. Je reçois la dernière entrée que mon maximum, et un 0 pour mon minimum.
#include<stdio.h>
int main()
{
float average;
int i, n, count=0, sum=0, squaresum=0, num, min, max;
printf("Please enter the number of numbers you wish to evaluate\n");
scanf_s("%d",&n);
printf("Please enter %d numbers\n",n);
while(count<n)
{
min=0;
max=0;
if(num>max)
max=num;
if(num<min)
min=num;
scanf_s("%d",&num);
sum = sum+num;
squaresum = squaresum + (num*num);
count++;
}
average = 1.0*sum/n;
printf("Your average is %.2f\n",average);
printf("The sum of your squares is %d\n",squaresum);
printf("Your maximum number is %d\n",max);
printf("Your minimum number is %d\n",min);
return(0);
}
OriginalL'auteur user3133973 | 2013-12-25
Vous devez vous connecter pour publier un commentaire.
Votre algorithme est pas tout à fait droit. Ci-dessous est la mise en œuvre correcte:
J'ai ajouté la vérification des erreurs et de récupération. Veuillez vous demander si vous avez des questions au sujet de la logique.
scanf()
et à l'aide demin = INT_MAX, max = INT_MIN
.Seulement parce que je savais que vous feriez sûr que je n'ai droit. 😀
"Ho! ho! ho!"
Vous n'obtenez ma liste de cadeaux de Noël! Merci Santa Chux!
OriginalL'auteur Fiddling Bits
La façon dont votre code est actuellement écrit,
min
doit commencer à une valeur élevée (pas de 0), ou le code ne fonctionne pas. La meilleure valeur est la valeur maximale possible pour uneint
.Vous devriez également considérer si oui ou non vous souhaitez réinitialiser ces variable à chaque passage dans la boucle.
OriginalL'auteur Robert Harvey
Entrez le premier
num
en dehors de la boucle et affectez-le àmax
min
Changer votre lors de la boucle pour boucle infinie
et maintenant vérifier la condition que si votre compteur
count
est égal àn
est ou de ne pasbreak
de la boucle infinieCode complet après modification:
OriginalL'auteur haccks
Assumer votre premier nombre de la liste que le minimum et le maximum.
Comparer chaque caractère suivant avec le minimum et le maximum actuel et de mettre à jour en conséquence.
OriginalL'auteur udit bansal
votre boucle while doit ressembler à
Et je suis d'accord avec Robert Harvey♦.. Vous devez définir
min
et
max
sont hors de la boucleOriginalL'auteur AJ.
Ajouter un booléen, déplacé de donner les valeurs min, max 0 sont le début de la boucle de la
Devrait également envisager de vérifier la valeur de retour de scanf
OriginalL'auteur Ed Heal
Il y a quelques problèmes dans votre code:
num
est lire? Vous devriez le faire avantmin
etmax
num
àmax
etmin
.Quelque chose comme ça:
Guérir: booléen (bool) est apparu en C99 seulement; car il n'y a pas d'information dans la question qui C standard est utilisé, j'ai mis en int
Nous sommes cogner en 2014 si l'on suppose que l'on a un peu plus moderne de compilateur que ça!
Dire à tous les gens à l'aide de Microsoft compilateur pour passer les compilateurs si elles veulent apprendre quelque chose au-delà de C89! Vite! 😛
OriginalL'auteur Dmitry Bychenko