[英]My simple C++ program calculates total payroll amount and I want to know a better and more efficient way to do this
我試圖在一個簡單的程序中實現do..while循環。 在程序中,我要求工資總額,然后計算工資總額,並輸出總和和有效條目數。 太簡單了,所以我決定添加一些錯誤檢查。
#include <iostream>
#include <cmath>
#include <math.h>
using namespace std;
const int SENTINEL = -1;
int main(){
int payroll, payroll_sum, counter = 0;
do{
cout << "Enter a payroll amount (-1 to end): ";
cin >> payroll;
if((payroll < SENTINEL)){
cout << "\nError!\nPlease enter a correct value.\n" << endl;
int main(payroll);
}
else{
payroll_sum += payroll;
counter += 1;
cout << "\n";
}
if(payroll == SENTINEL){
payroll_sum += 1;
counter -= 1;
}
}while(payroll != SENTINEL);
cout << "\n\nTotal payroll amount is: " << payroll_sum;
cout << "\nTotal number of entries is: " << counter;
return 0;
}
該代碼有效,但是讓我感到煩惱的是,我必須從計數器中減去一個並將其加到總和上,因為我不知道如何使程序忽略SENTINEL輸入。 而且,我敢肯定,有一種更好的方法來進行錯誤處理。 提前致謝。
采用
continue;
代替
int main(payroll);
並且,通過使用來初始化payroll_sum
payroll_sum=0
循環之前。 另外,移除
if(payroll == SENTINEL){
payroll_sum += 1;
counter -= 1;
}
並將最后兩個cout
更改為
cout << "\n\nTotal payroll amount is: " << payroll_sum+1;
cout << "\nTotal number of entries is: " << counter-1;
我會這樣寫,因為它比較干凈。 我注意到了一些您可能需要注意的事項:
continue
循環和break
循環以及何時使用do-while
或while
循環的信息。 編碼愉快!
const int SENTINEL = -1;
int main() {
int payroll_sum = 0;
int payroll = 0;
int counter = 0;
while (payroll != SENTINEL) {
cout << "Enter a payroll amount (-1 to end): ";
cin >> payroll;
if(payroll == SENTINEL) break;
if((payroll < SENTINEL)){
cout << "\nError!\nPlease enter a correct value.\n" << endl;
continue;
}
else {
payroll_sum += payroll;
counter++;
}
}
cout << "\n\nTotal payroll amount is: " << payroll_sum;
cout << "\nTotal number of entries is: " << counter;
return 0;
}
似乎是關於條件邏輯的簡單問題。 有很多不同的方法來構造if條件,但是一種比當前代碼更有效的方法可能是:
while(true)
{
cout << "Enter a payroll amount (-1 to end): ";
cin >> payroll;
if(payroll == SENTINEL)
break;
if((payroll < SENTINEL))
{
cout << "\nError!\nPlease enter a correct value.\n" << endl;
int main(payroll);
}
else
{
payroll_sum += payroll;
counter += 1;
cout << "\n";
}
}
如果您不喜歡使用while(true),我可以提供另一個示例。 干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.