【问题标题】:My program is not reading from a file and inputting the data我的程序没有从文件中读取并输入数据
【发布时间】:2020-07-05 22:01:01
【问题描述】:

我编写了一个程序来计算 7 名员工的总工资。该程序从文件 (payroll.dat) 中读取数据,以获取数据成员“小时”和“工资率”的数据。所有 7 位员工的输出为 0.00,数据文件 >> 小时;数据文件>>工资率;似乎是正确的。我不知道为什么程序没有从文件中读取数据并将数据输入到成员中。

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;

class Payroll
{
private:
    double hours;
    double payrate;
    double grosspay;

public:
    Payroll()
    {
        hours = 0.0;
        payrate = 0.0;
        grosspay = 0.0;

    }

    Payroll(double h, double p)
    {
        hours = h;
        payrate = p;
        grosspay = hours * payrate;
    }

    double setHours(double h)
    {
        hours = h;
    }

    double setPayrate(double p)
    {
        payrate = p;
    }

    double getHours()
    {
        return hours;
    }

    double getPayrate()
    {
        return payrate;
    }

    double getGrosspay()
    {
        return grosspay;
    }

};

const int employees = 7;

int main()
{
    double hours;
    double payrate;
    double grosspay;


    int index;

    Payroll totalPay[employees];
    {
        ifstream datafile;

        datafile.open("payroll.dat");

        if (!datafile)
            cout << "Error opening data file \n";

        else
        {
            for (index = 0; index < 7; index++)  
            {
                datafile >> hours;
                datafile >> payrate;
                grosspay = hours * payrate;

                
                cout << endl;
                cout << fixed << setprecision(2);
                cout << "Employee" << (index + 1) << ": " << totalPay[employees].getGrosspay() << endl;
            }
        }

        datafile.close();
    }

    return 0;
} 

【问题讨论】:

    标签: c++ visual-c++ c++17


    【解决方案1】:

    在你最里面的for 循环中,你正在做:

    grosspay = hours * payrate;
    

    但变量grosspay 只是一个局部变量,不会更新totalPay 数组。所以这一行:

    cout << "Employee" << (index + 1) << ": " << totalPay[employees].getGrosspay() << endl;
    

    打印默认构造的Payrollgrosspay

    您需要执行以下操作,而不是分配给局部变量:

    totalPay[index] = Payroll(hours, payrate);
    

    构造一个正确的Payroll 对象并将其分配给数组中的索引。

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多