C++ 将信息从结构输入到数组

C++ 将信息从结构输入到数组,c++,arrays,structure,C++,Arrays,Structure,我们一直在试图弄清楚如何将信息输入数组并从结构化变量输出。我可以在不使用数组的情况下轻松地输入和输出信息,但是我正在尝试从键盘输入一个工作人员列表。我还需要计算每个工人的工资,但如果我能从前三个变量中计算出简单信息的格式,我就可以自己计算出这一部分。我尝试调用数组中的输入函数,但没有成功,所以我只是删除了它并保留了这些函数 #include<iostream> using namespace std; struct Worker { int idNumber;

我们一直在试图弄清楚如何将信息输入数组并从结构化变量输出。我可以在不使用数组的情况下轻松地输入和输出信息,但是我正在尝试从键盘输入一个工作人员列表。我还需要计算每个工人的工资,但如果我能从前三个变量中计算出简单信息的格式,我就可以自己计算出这一部分。我尝试调用数组中的输入函数,但没有成功,所以我只是删除了它并保留了这些函数

 #include<iostream>


using namespace std;

struct Worker

{

    int idNumber;
    int hoursWorked;
    double hourlyRate;
    double earned;

};

void input(Worker & theData);
//Postcondition: theData.idNumber, theData.hoursWorked, and theData.hourlyRate are given input values
// the user must input into these values.
void print(const Worker &);

void input(Worker[], int howMany);

void  print(const Worker[], int);



void main()
{
    Worker arr[10];
    Worker Data;
    input(Data);
    print(Data);

    input(arr[10],7);

    system("pause");

}

void input(Worker& theData) {
    cout << "Enter the Employee idNumber ";
    cin >> theData.idNumber;
    cout << "Enter the Hours Worked. ";
    cin >> theData.hoursWorked;
    cout << "Enter the HoutlyRate for under 41 hours. ";
    cin >> theData.hourlyRate;
}

void input(Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        input(arr[i]);
    }
}

void print(const Worker& w) {
    cout << w.idNumber << "\n" << w.hoursWorked << "\n" << w.hourlyRate << "\n" << w.earned << endl;
}

void print(const Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        print(arr[i]);
    }
}
    #include<iostream>


using namespace std;

struct Worker

{

    int idNumber;
    int hoursWorked;
    double hourlyRate;
    double earned;

};

void input(Worker & theData);
//Postcondition: theData.idNumber, theData.hoursWorked, and theData.hourlyRate are given input values
// the user must input into these values.
void print(const Worker &);

void calcInput(Worker[], int howMany);

void input(Worker[], int howMany);
void  print(const Worker[], int);
void calc(Worker & theWage);



void main()
{
    Worker Data;
    int howMany;

    cout << "How many?";
    cin >> howMany;

    Worker * workers = new Worker[howMany];
    input(workers, howMany);
    calcInput(workers, howMany);
    print(workers, howMany);

    system("pause");
    delete[] workers;

}

void input(Worker& theData) {
    cout << "Enter the Employee idNumber ";
    cin >> theData.idNumber;
    cout << "Enter the Hours Worked. ";
    cin >> theData.hoursWorked;
    cout << "Enter the HoutlyRate for under 41 hours. ";
    cin >> theData.hourlyRate;
}

void input(Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        input(arr[i]);
    }
}

void print(const Worker& w) {
    cout << w.idNumber << "\n" << w.hoursWorked << "\n" << w.hourlyRate << "\n" << w.earned << endl;
}

void print(const Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        print(arr[i]);
    }
}

void calc(Worker & theWage)
{
    if (theWage.hoursWorked <= 40)
    {
        theWage.earned = theWage.hoursWorked * theWage.hourlyRate;
    }
    else
    {
        int basePay;
        basePay = theWage.hoursWorked * theWage.hourlyRate;
        theWage.earned = (theWage.hoursWorked - 40) * 1.5 + basePay;
    }
}

void calcInput(Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        calc(arr[i]);
    }
}
#包括
使用名称空间std;
结构工人
{
国际电话号码;
工作时间;
双钟头;
双倍收入;
};
无效输入(工作者和数据);
//后置条件:Data.idNumber、Data.hoursWorked和Data.HourlRyrate是给定的输入值
//用户必须输入这些值。
无效打印(const-Worker&);
无效输入(工作者[],整数多少);
无效打印(const-Worker[],int);
void main()
{
工人arr[10];
工人数据;
输入(数据);
打印(数据);
输入(arr[10],7);
系统(“暂停”);
}
无效输入(工作者和数据){
cout>theData.idNumber;
cout>数据。工作小时数;
cout>theData.hourlyRate;
}
无效输入(工人arr[],整数多少)
{
for(int i=0;i<多少;i++)
{
输入(arr[i]);
}
}
无效打印(施工人员和工作人员){

cout好的,如果我理解正确,您希望能够读入关于一组worker的信息,并将其存储到一个结构数组中。如果我错了,请更正我的错误,但如果这是您希望做的,我认为您实际上可以使用单worker
input
这样的函数来欺骗这一点

struct Worker
{
    int idNumber;
    int hoursWorked;
    double hourlyRate;
    double earned;
};

void input(Worker& theData) {
    cout << "Enter the Employee idNumber ";
    cin >> theData.idNumber;
    cout << "Enter the Hours Worked. ";
    cin >> theData.hoursWorked;
    cout << "Enter the HoutlyRate for under 41 hours. ";
    cin >> theData.hourlyRate;
}

void input(Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        input(arr[i]);
    }
}

void print(const Worker& w) {
    cout << w.idNumber << "\n" << w.hoursWorked << "\n" << w.hourlyRate << "\n" << w.earned << endl;
}

void print(const Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        print(arr[i]);
    }
}

你就快到了。这听起来像是课程作业,所以我不建议使用std::vector。顺便说一下,查找std::vector,并在可能的时候使用它。它会帮你省去很多痛苦

要使用数组,首先需要知道数组的大小和保留空间。有多种方法可以获得工作线程的数量,但这可能是最简单的方法:

int main()
{
    int howMany;
    cout << "How many?";
    cin >> howMany;

    Worker * workers = new Worker[howMany];

谢谢大家的帮助!我终于想出了办法,而且效果很好

 #include<iostream>


using namespace std;

struct Worker

{

    int idNumber;
    int hoursWorked;
    double hourlyRate;
    double earned;

};

void input(Worker & theData);
//Postcondition: theData.idNumber, theData.hoursWorked, and theData.hourlyRate are given input values
// the user must input into these values.
void print(const Worker &);

void input(Worker[], int howMany);

void  print(const Worker[], int);



void main()
{
    Worker arr[10];
    Worker Data;
    input(Data);
    print(Data);

    input(arr[10],7);

    system("pause");

}

void input(Worker& theData) {
    cout << "Enter the Employee idNumber ";
    cin >> theData.idNumber;
    cout << "Enter the Hours Worked. ";
    cin >> theData.hoursWorked;
    cout << "Enter the HoutlyRate for under 41 hours. ";
    cin >> theData.hourlyRate;
}

void input(Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        input(arr[i]);
    }
}

void print(const Worker& w) {
    cout << w.idNumber << "\n" << w.hoursWorked << "\n" << w.hourlyRate << "\n" << w.earned << endl;
}

void print(const Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        print(arr[i]);
    }
}
    #include<iostream>


using namespace std;

struct Worker

{

    int idNumber;
    int hoursWorked;
    double hourlyRate;
    double earned;

};

void input(Worker & theData);
//Postcondition: theData.idNumber, theData.hoursWorked, and theData.hourlyRate are given input values
// the user must input into these values.
void print(const Worker &);

void calcInput(Worker[], int howMany);

void input(Worker[], int howMany);
void  print(const Worker[], int);
void calc(Worker & theWage);



void main()
{
    Worker Data;
    int howMany;

    cout << "How many?";
    cin >> howMany;

    Worker * workers = new Worker[howMany];
    input(workers, howMany);
    calcInput(workers, howMany);
    print(workers, howMany);

    system("pause");
    delete[] workers;

}

void input(Worker& theData) {
    cout << "Enter the Employee idNumber ";
    cin >> theData.idNumber;
    cout << "Enter the Hours Worked. ";
    cin >> theData.hoursWorked;
    cout << "Enter the HoutlyRate for under 41 hours. ";
    cin >> theData.hourlyRate;
}

void input(Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        input(arr[i]);
    }
}

void print(const Worker& w) {
    cout << w.idNumber << "\n" << w.hoursWorked << "\n" << w.hourlyRate << "\n" << w.earned << endl;
}

void print(const Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        print(arr[i]);
    }
}

void calc(Worker & theWage)
{
    if (theWage.hoursWorked <= 40)
    {
        theWage.earned = theWage.hoursWorked * theWage.hourlyRate;
    }
    else
    {
        int basePay;
        basePay = theWage.hoursWorked * theWage.hourlyRate;
        theWage.earned = (theWage.hoursWorked - 40) * 1.5 + basePay;
    }
}

void calcInput(Worker arr[], int howMany)
{
    for (int i = 0; i < howMany; i++)
    {
        calc(arr[i]);
    }
}
#包括
使用名称空间std;
结构工人
{
国际电话号码;
工作时间;
双钟头;
双倍收入;
};
无效输入(工作者和数据);
//后置条件:Data.idNumber、Data.hoursWorked和Data.HourlRyrate是给定的输入值
//用户必须输入这些值。
无效打印(const-Worker&);
无效输入(工作者[],整数多少);
无效输入(工作者[],整数多少);
无效打印(const-Worker[],int);
无效计算(工人和工资);
void main()
{
工人数据;
int有多少个;
有多少;
工人*工人=新工人[人数];
输入(工人,人数);
煅烧量(工人,有多少人);
打印(工作人员,人数);
系统(“暂停”);
删除[]名工人;
}
无效输入(工作者和数据){
cout>theData.idNumber;
cout>数据。工作小时数;
cout>theData.hourlyRate;
}
无效输入(工人arr[],整数多少)
{
for(int i=0;i<多少;i++)
{
输入(arr[i]);
}
}
无效打印(施工人员和工作人员){

你能将输入信息存储在一个结构数组中吗?我必须编写四个函数来创建一个工作结构数组。1.一个函数用于输入一个工作结构数组2.一个函数用于计算数组中每个工作结构的收入3.一个函数用于输出工作结构数组4.一个函数用于计算加班的工人数量,通过函数返回答案不清楚你在问什么。请考虑问一个问题,并感谢快速响应。我没有意识到我在输入函数上有这个常数。函数应该为我的目的服务,但是,我觉得愚蠢的要求。这是一个错误,但我不知道如何在主驱动程序中调用该函数。我将使用我正在使用的调用编辑我的程序。不太清楚答案的用途。无论如何,您仍然需要
void calc(Worker arr[],int hown)
函数,并且可能应该在输入函数之后调用calc。您还可以通过将
main()
放在文件底部,并将所有其他函数放在第一次使用之前,来消除拥有和维护转发声明隔离区的需要。