** ОБНОВЛЕНИЕ: Это было решено, Лок Тран!Спасибо, ЛокТран !!**
Я пишу программу (с использованием строго C), которая рассчитывает минимальное изменение в номиналах США.После того, как моя программа достигает десяти центов (первая деноминация, которая не делится на целое число, программа, похоже, не хочет переходить на никели и копейки.
Я попытался использовать оператор if, исключая значение dimesDue при возвратеноль, но, кажется, не могу понять. Если вы заметили, мне также пришлось сделать новую переменную изменения для каждого номинала, основываясь на вычете предыдущих номиналов из общей суммы изменения. Я бы предпочел упростить это и указать новыйзначение после каждого расчета, но не может.
// Amount Tendered and Purchase amount converted to pennies
amountDue = 2117;
amountGiven = 10000;
// Creating a new change amount for each denomination, based on each previous computation
change = amountGiven - amountDue;
change10s = change % (20 * 100);
change5s = change % (10 * 100);
change1s = change % (5 * 100);
changeQs = change % (1 * 100);
changeDs = change % 25;
changeNs = change % 10;
changePs = change % 1;
// Using each new change amount to calculate amount of denomination
twentiesDue = (change / 20) / 100;
tensDue = (change10s / 10) / 100;
fivesDue = (change5s / 5) / 100;
onesDue = (change1s / 1) / 100;
quartersDue = (changeQs / 25);
dimesDue = (changeDs / 10);
nickelsDue = (changeNs / 5);
penniesDue = (changePs / 1);
printf("Amount Due: $21.17\nAmount Tendered: $100\n\n");
printf("Change Due:\n(by denomination)\n");
printf("Twenties: %d\n", twentiesDue);
printf("Tens: %d\n", tensDue);
printf("Fives: %d\n", fivesDue);
printf("Ones: %d\n", onesDue);
printf("Quarters: %d\n", quartersDue);
printf("Dimes: %d\n", dimesDue);
printf("Nickels: %d\n", nickelsDue);
printf("Pennies: %d\n", penniesDue);
Программа достигает десяти центов (первое наименование, которое не равно целому числу) и не продолжает рассчитывать количество никелей и пенни.Остаток изменения, оставшийся после четверти, составляет 8 центов, это не делится на 10. Но я не могу понять, как указать, чтобы игнорировать это, используя оператор if!
Таким образом, результат - когда программа достигает десяти центов, всепеременная после этого вычислить до нуля. Но там шможет быть один никель и три копейки!Вот результат, когда я запускаю его:
Сумма к оплате: 21,17 $ Тендерная сумма: $ 100
Изменение к оплате: (по деноминации)3 копейки: 0 никелей: 0 копеек: 0