[英]logic error, need help can't figure out the looping logic
我是一名初學者,我需要一些有關如何輸出正確語法的想法。
如果我輸入數字<25輸出和額外的“,”,因為它仍然會貫穿並看到(amount_left> 0)。 如果不存在四分之一或一角錢,我將如何使其不輸出“,”?
#include <cstdio>
#include <iostream>
using namespace std;
void compute_coins(int coin_value, int& number, int& amount_left);
int main(){
int amount_left, number;
while(amount_left > 1 || amount_left < 99){
cout << "Enter number of cents (or zero to quit):" << endl;
cin >> amount_left;
if (amount_left == 0){
break;
}
else{
cout << amount_left << " cents can be given as ";
compute_coins(25, number, amount_left);
if (number == 1){
cout << "1 quarter";
}
else if (number > 0){
cout << number << " quarters";
}
if (amount_left > 0){
cout << ", ";
}
compute_coins(10, number, amount_left);
if (number == 1){
cout << "1 dime";
}
else if (number > 1){
cout << number << " dimes";
}
if (amount_left > 0){
cout << ", ";
}
compute_coins(1, number, amount_left);
if (number == 1){
cout << "1 penny";
}
else if (number > 1){
cout << number << " pennies";
}
std:: cout << ".";
}
cout << endl;
}
return 0;
}
void compute_coins(int coin_value, int& number, int& amount_left){
number = amount_left/coin_value;
amount_left = amount_left - (number * coin_value);
}
期望有一個期間,並且在打印出所有金額之后必須恰好有一個期間。
因此,編寫復雜的代碼試圖找出是否應該在其余所有面額的其余代碼完成之前打印一個句點,在邏輯上是沒有邏輯的。
只需除去在所有那些笨拙的if / else語句內打印所有那些句點的代碼即可。
在一切的最后,只需執行
std::cout << ".";
不, if
s, else
s或buts。
只需關注寫出所有面額計數(用逗號正確分隔)的問題即可。 忘記尾隨的時期。 僅關注格式化所有可能面額的逗號分隔列表。 讓拖延期不在您的腦海中。
然后,一旦您完成所有工作,只需追加
std::cout << ".";
最后,稱之為一天。 這是一種100%保證的方式,也就是您的退款,可以在輸出的最后精確地以一個周期結束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.