2017-11-27 3 views
-1
  1. ファイルを処理し、ループを使用して行の最後まで読み取るプログラムを作成します。姓、労働時間、時給:
  2. は時間が倍のファイルINPUT.TXTが含まれてい
    • 時給を働いたとして給与を計算した値を返す関数を書きます。
    • 例:スミス80 15.00
  3. は、ファイルを開き、ファイルの状態をチェックし、ファイルを開くに失敗した場合、プログラムを終了します。
  4. ループ内のデータを読み取り、給与を計算する関数を呼び出す
  5. 関数呼び出しが給与を計算した後に計算します。私はこれと間違っているかわからないんだけど

    C++関数:ファイルの終わりまでの読み取り - コードでのエラーの検出

    #include <iostream> 
        #include <fstream> 
        #include <string> 
        using namespace std; 
        float DetermineSalary(ifstream& inFile, float hoursWorked, float 
        hourlyRate); 
        int main(){ 
         ifstream inFile; 
         inFile.open("input.txt");//opening file 
         string name; 
         float hoursWorked, hourlyRate; 
         float salary; 
         inFile >> name >> hoursWorked >> hourlyRate; //priming read 
    
        while(inFile){ 
         inFile >> name >> hoursWorked >> hourlyRate; 
         DetermineSalary(inFile, hoursWorked, hourlyRate); 
         cout << "The salary for " << name << "is: $" << salary << endl; 
        } 
        if (!inFile){ 
         cout << "Error opening file." << endl; 
         return 1; 
        } 
        } 
    float DetermineSalary(ifstream& inFile, float hoursWorked, float hourlyRate){ 
        string name; 
        float salary; 
    
        getline(inFile, hoursWorked); 
        getline(inFile, hourlyRate); 
        getline(inFile, name); 
        while(inFile){ 
         salary = hoursWorked * hourlyRate; 
        } 
    } 
    

このは私のコードです。もし誰かが私を正しい方向に向けることができ、何が間違っているのか、あるいは私が改善できるものを説明できるのであれば大好きでしょうか?

ありがとうございます!

+4

あなたの現在のコードで問題が特定されていません。 VSが現在何をすべきか。私たちはボランティアだから、「私の宿題はデバッグしてくれない」より少しだけ期待しています – SaggingRufus

答えて

0

あなたの関数DetermineSalaryの中にsalary変数を宣言しました。すべての関数呼び出しは、main関数で宣言された給与変数ではなく、関数内の変数にデータが格納されます。 salary変数を関数内で削除するとうまくいくはずです。

+0

ありがとうございました!私は関数DetermineSalaryで値を渡しました。 – shglrit

+0

これは良い方法です:) スレッドを閉じることができるように正しいとマークしてください。 –

0

私はあなたのコードを書き直しました。以下のコードであなたの間違いを見てください。これを試してみて、もう助けが必要な場合はお知らせください。

//using namespace std; 
float DetermineSalary(float hoursWorked, float hourlyRate); 
int main(){ 
    std::ifstream inFile; 
    inFile.open("input.txt");//opening file 
    if (!inFile){ 
     std::cout << "Error opening file." << std::endl; 
     return 1; 
    } 
    std::string name; 
    std::string hW, hR; 
    float hoursWorked = 0, hourlyRate = 0; 
    float salary; 
    //inFile >> name >> hoursWorked >> hourlyRate; //priming read you dont need this line 

    while(inFile >> name >> hW >> hR){ 
     hoursWorked = ::atof(hW.c_str()); 
     hourlyRate = ::atof(hR.c_str()); 
     salary = DetermineSalary(hoursWorked, hourlyRate); 
     std::cout << "The salary for " << name << "is: $" << salary << std::endl; 
    } 
} 

float DetermineSalary(float hoursWorked, float hourlyRate){ 
    return (hoursWorked + hourlyRate); 
} 
関連する問題