J’ai exécuté ce programme et j’obtiens le résultat de l’expression d’erreur inutilisé. Je fais peut-être quelque chose de simplement faux, mais j’ai passé la journée à essayer de comprendre en vain. Toute aide que vous pouvez fournir est grandement appréciée.
#include #include int main() { int x, y = 0; printf("Enter the amount of change "); x = GetFloat() * 100; while (x != 0) { if (x >= 25) { x - 25; y = y + 1; } if (x >= 10 && x = 5 && x = 1 && x < 5) { x - 1; y= y + 1; } } printf("The number of coins neccessary is %d", y); }
if (x >= 25) { x - 25; // This accomplishes nothing y = y + 1; } if (x >= 10 && x < 25) { x - 10; // This accomplishes nothing } y = y + 1; if (x >= 5 && x < 10) { x - 5; // This accomplishes nothing } y = y + 1; if (x >= 1 && x < 5) { x - 1; // This accomplishes nothing y= y + 1; }
Dans chacune de ces lignes, vous soustrayez un nombre à x
, mais vous ne faites rien avec le résultat. Si vous essayez de mettre à jour x
avec le résultat, vous devez procéder comme vous le faites avec y
et mettre x =
devant l'expression.
Donc si vous voulez que x
descende de 25
, vous devriez écrire:
x = x - 25;
Alternativement, vous pouvez écrire le raccourci:
x -= 25; // Note the equal sign
Tous les 4 énoncés x – 25, x – 10, x – 5, x – 1 s’avéreront inutiles à moins d’atsortingbuer cette valeur à x; Parce que vous essayez de soustraire la valeur de x, mais que vous n’atsortingbuez pas la nouvelle valeur à x.
Voici la solution de votre problème:
#include #include int main() { int x, y = 0; printf("Enter the amount of change "); x = GetFloat() * 100; while (x != 0) { if (x >= 25) { x = x - 25; //or x-=25; y = y + 1; } if (x >= 10 && x < 25) { x = x - 10; //or x-=10; y = y + 1; } if (x >= 5 && x < 10) { x = x - 5; //or x-=5; y = y + 1; } if (x >= 1 && x < 5) { x = x - 1; //or x-=1; or x--; or --x; :) y = y + 1; } } printf("The number of coins neccessary is %d", y); }
Je restrais convaincu de la structure de votre boucle. Il y a l’opérateur de division qui peut être utilisé à bon escient:
int total = 0; int ncoins; int amount = GetFloat() * 100; assert(amount >= 0); ncoins = amount / 25; total += ncoins; amount -= ncoins * 25; assert(amount < 25); ncoins = amount / 10; total += ncoins; amount -= ncoins * 10; assert(amount < 10); ncoins = amount / 5; total += ncoins; amount -= ncoins * 5; assert(amount < 5); total += amount;
C'est écrit à la main; vous pouvez aussi concevoir une boucle:
int values[] = { 25, 10, 5, 1 }; enum { N_VALUES = sizeof(values) / sizeof(values[0]) }; int total = 0; int ncoins; int amount = GetFloat() * 100; assert(amount >= 0); for (int i = 0; i < N_VALUES && amount > 0; i++) { ncoins = amount / values[i]; total += ncoins; amount -= ncoins * values[i]; } assert(amount == 0);