2017-02-24 8 views
-1

私はヘッダファイルにwhileループを入れて、main.cppに接続したいのですが、ヘッダファイルのように記述されていない限りmain.cppはそれを再生しません。ヘッダーのwhileループが必要なのかどうか疑問に思っていますか?割り当ては、彼女の売上げを考慮してユーザーの給与を計算するプログラムを作成することです。ヘッダまたはメインファイルのループ

これは私のヘッダファイルです:

class Salary 
{ 
public: 
Salary(){}; 
    Salary(double employeeSales, double employeeSalary) 
    :sales{employeeSales},salary(employeeSalary) 
    { 
     while(employeeSales != -1) 
     { 
      salary = 200 + (.09 * sales); 
     } 
    } 
void setSales(double employeeSales) 
{ 
    sales = employeeSales; 
} 
void setSalary(double employeeSalary) 
{ 
    salary = employeeSalary; 
} 

double getSales() const{return sales;} 
double getSalary() const{return salary;} 
private: 
    double sales; 
    double salary; 
}; 

私はしばらくの間(employeeSalesを入れない限り、メインでwhileループが動作しませんしかし、これは私のmain.cppに

#include <iostream> 
#include <iomanip> 
#include "Salary.h" 

using namespace std; 
int main() 
{ 
    Salary mySalary; 
    double employeeSales; 
    double employeeSalary; 
    cout << fixed << setprecision(2); 
    cout << "Enter sales in dollars(-1 to quit): "; 
    cin >> employeeSales; 
    mySalary.setSales(employeeSales); 

    while(true) 
    { 
     employeeSalary = 200 + (.09 * employeeSales); 
     mySalary.setSalary(employeeSalary); 
     cout << "Salary is: $" << mySalary.getSalary(); 
     cout << "Enter sales in dollars(-1 to quit): "; 
     cin >> employeeSales; 
     mySalary.setSales(employeeSales); 
    } 

} 

ある= -1! )

+1

「うまくいかない」とは何ですか? – tadman

+0

2番目のコンストラクタは使用されません。だから、 'while(employeeSales!= -1)'を追加することは失敗を防ぐことができません。 – GigaRohan

+0

デバッガでコードをステップ実行すると、ループが実行されない理由がわかります。 –

答えて

0

コンストラクタでガベージデータ(引数-1)を処理するのではなく、ユーザが-1を入力した場合にブレークするメインのwhileループにif文を作成するだけです。

while(true) 
{ 
    employeeSalary = 200 + (.09 * employeeSales); 
    mySalary.setSalary(employeeSalary); 
    cout << "Salary is: $" << mySalary.getSalary(); 
    cout << "Enter sales in dollars(-1 to quit): "; 
    cin >> employeeSales; 
    if(employeeSales == -1) 
    { 
     cout << "Stopping program!" << endl; 
     break; // exits the while loop 
    } 
    mySalary.setSales(employeeSales); 
} 

これを行うと、給与コンストラクタのwhileループが不要になり、うまくいけば問題を解決できるはずです。

+0

です。しかし、私の質問は、ヘッダーのwhileループは何をするのでしょうか?プログラムがまだそれなしで動くことができるので、それは必要でさえあります。 – xx123

+0

@ xx123ヘッダーのwhileループは存在しないはずです。上記のソリューションでは、あなたのメインのガベージデータをチェックするので、条件付きループなしでsalary変数を割り当てることができます。 –

関連する問題