0

コードにいくつか問題があります。

まず、このようなコードでは、どのような情報を入力しても、常に0が返されます。これをどこでどのように修正するかについての提案はありますか?それは私のクラスの従業員と関係があると思います。これを修正するにはどうすればよいですか?

次に、int total()の情報にアクセスするにはどうすればよいですか?コードの最後の部分でアクセスする必要があります。

また、プログラムを最適化するために私ができることが他にあることに気付いた場合は、あなたの提案を歓迎します。私はC++を学びながら、常に学生になります。

// Datamax.cpp
// Created by Kennith Adkins

#include <iostream>
#include <string>

using namespace std;

class Employee
{
public:
string eName;
float eHours;
float eWage;
float ePay;
float eOvertimeHours;
float eOvertimePay;
float eTotalPay;
float eTotalBaseHours;
float eTotalSalary;
float eTotalOvertimeHours;

int Overtime ()
{
    if (eHours > 40)
    {
        eOvertimeHours = (eHours - 40);
        eOvertimePay = (eOvertimeHours * (eWage * 1.5));
        ePay = ((eHours - eOvertimeHours) * eWage);
        eTotalPay = ePay + eOvertimePay;
    }
    else
    {
        ePay = (eHours * eWage);
    }
}
int total()
{
    eTotalBaseHours = (employee1.eHours - employee1.eOvertimeHours) +   (employee2.eHours - employee2.eOvertimeHours) + (employee3.eHours -   employee3.eOvertimeHours);
    eTotalSalary = (employee1.eTotalPay + employee2.eTotalPay + employee3.eTotalPay);
    eTotalOvertimeHours = (employee1.eOvertimeHours + employee2.eOvertimeHours        + employee3.eOvertimeHours);
}
} employee1, employee2, employee3;

// Start the main program here
int main()
{
// Gretting
cout << "Welcome to the Employee Pay Center\n";

// Employee1 information
cout << "Enter the employee name: ";
cin >> employee1.eName;
cout << "Enter the hours worked: ";
cin >> employee1.eHours;
cout << "Enter his or her hourly wage: ";
cin >> employee1.eWage;
cout << endl; // Adding a blank line to space the information out

// Employee2 information
cout << "Enter the employee name: ";
cin >> employee2.eName;
cout << "Enter the hours worked: ";
cin >> employee2.eHours;
cout << "Enter his or her hourly wage: ";
cin >> employee2.eWage;
cout << endl; // Adding a blank line to space the information out

// Employee3 information
cout << "Enter the employee name: ";
cin >> employee3.eName;
cout << "Enter the hours worked: ";
cin >> employee3.eHours;
cout << "Enter his or her hourly wage: ";
cin >> employee3.eWage;
cout << endl; // Adding a blank line to space the information out

// Returning the information to the Employeer
cout << "Employe Name ............ = " << employee1.eName << "\n";
cout << "Base Pay................. = " << employee1.ePay << "\n";
cout << "Hours in Overtime........ = " << employee1.eOvertimeHours << "\n";
cout << "Overtime Pay Amount...... = " << employee1.eOvertimePay << "\n";
cout << "Total Pay................ = " << employee1.eTotalPay << "\n\n";

cout << "Employe Name ............ = " << employee2.eName << "\n";
cout << "Base Pay................. = " << employee2.ePay << "\n";
cout << "Hours in Overtime........ = " << employee2.eOvertimeHours << "\n";
cout << "Overtime Pay Amount...... = " << employee2.eOvertimePay << "\n";
cout << "Total Pay................ = " << employee2.eTotalPay << "\n\n";

cout << "Employe Name ............ = " << employee3.eName << "\n";
cout << "Base Pay................. = " << employee3.ePay << "\n";
cout << "Hours in Overtime........ = " << employee3.eOvertimeHours << "\n";
cout << "Overtime Pay Amount...... = " << employee3.eOvertimePay << "\n";
cout << "Total Pay................ = " << employee3.eTotalPay << "\n\n";

cout << "*******************************************************\n";
cout << "*****************EMPLOYEE SUMMARY DATA*****************\n";
cout << "*******************************************************\n";
cout << "** Total Employee Salaries............ " <<   "**\n";
cout << "** Total Employee Hours............... " <<   "**\n";
cout << "** Total Overtime Hours............... " <<   "**\n";
cout << "*******************************************************\n";
    cout << "*******************************************************\n";


return 0;
}

やあみんな、助けてくれてありがとう。私はそれのほとんどを今やった。すべての情報を表示しています。現在、従業員の概要データを表示するように取り組んでいます。実践的に学ぶのが一番であるため、与えられたすべての提案を試していたので、コードを改良してよりクリーンにしました。

4

2 に答える 2

1

これは、初期化されていない変数を使用することで得られるものです。クラスメンバーに値を設定していません。コンパイラが従業員の名前や総給与を推測することは期待できません。

次のフォームを使用する必要があります。

object name.member name = value

于 2012-08-19T23:52:09.890 に答える
1

もちろん、これらの関数によって生成されるはずの結果を出力する前に、関数を呼び出す必要があります。

employee1.Overtime();
employee2.Overtime();
employee3.Overtime();
于 2012-08-19T23:57:54.877 に答える