簡體   English   中英

我簡單的C ++程序計算總工資總額,我想知道一種更好,更有效的方法

[英]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;

我會這樣寫,因為它比較干凈。 我注意到了一些您可能需要注意的事項:

  1. 聲明變量時初始化變量是一個好習慣。
  2. 閱讀有關continue循環和break循環以及何時使用do-whilewhile循環的信息。

編碼愉快!

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM