询问用户循环信息:如何按用户需要多次工作?

时间:2012-02-01 06:15:49

标签: c++ loops

好吧,我正在制作关于非农就业的计划,而且我被困住了。在程序中,在用户输入了员工数量之后,我必须进行循环,允许用户输入每个员工的信息。然后输入的数据将存储在我制作的employees数组中。我已经尝试了我的程序while(numberOfEmployees < MAXSIZE)部分的问题。是吗?

这就是我现在所拥有的:

#include <iostream>
using namespace std;

const int MAXSIZE = 20;

struct EmployeeT
{
    char name[MAXSIZE];
    char title;
    double gross;
    double tax;
    double net;
};

EmployeeT employees[MAXSIZE];

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

    while(numberOfEmployees > MAXSIZE)
    {
        cout << "Error: Maximum number of employees is 20\n";
        cout << "How many Employees? ";
        cin >> numberOfEmployees;
    }

    int name;
    int title;
    double gross;
    double tax;
    double net;

    for (int count=0; count<numberOfEmployees; count++)
    {
        cout << "Name: \n";
        cin >> employees[ count ].name;

        cout << "Title: \n";
        cin >> employees[ count ].title;

        cout << "Gross: \n";
        cin >> employees[ count ].gross;

        cout << "Tax: \n";
        cin >> employees[ count ].tax;

        cout << "Net: ";
        cin >> employees[ count ].net;
    }
}

我刚刚将其更新为此。我的最后一个问题是如何让第二个循环保持工作的次数与用户想要的一样多。对于用户输入的员工数量是多少?

4 个答案:

答案 0 :(得分:0)

你需要这样的东西:

int i = 0;
while(i < numberOfEmployees && i < MAXSIZE) {
    // some action here
    i++;
}

或:

for(int i = 0; i < numberOfEmployees && i < MAXSIZE; i++) {
    //some action here
}

您还可以选择最小数量的numberOfEmployeesMAXSIZE来构建条件:

numberOfEmployees = numberOfEmployees <= MAXSIZE ? numberOfEmployees : MAXSIZE;
for(int i = 0; i < numberOfEmployees; i++) { ... }

UPD:对于第一个循环,您可以将条件更改为numberOfEmployees > MAXSIZE并删除内部if子句

答案 1 :(得分:0)

几个问题:

1-将一个i ++放在while循环中的某个地方 (为什么不使用for循环?)

2-名称和标题应该是一个字符串:

#include <string>
//in the main:
std:string name;

3- while条件应为:

while(i<numberOfEmployees && i<MAXSIZE)

(编辑:我看到你刚才纠正了那个)

编辑:我刚注意到你总是写相同的变量。写信给员工[i] .name等。

这能解决您的问题吗?

答案 2 :(得分:0)

第一个循环,当您检查用户是否输入过大的值时,它永远不会结束!不要使用while (true),只需使用while (numberOfEmployees > MAXSIZE)并跳过if(但不是if内的内容)。

此外,由于您已确保numberOfEmployees有效,因此您的第二个循环中不需要&& i < MAXSIZE条件。

答案 3 :(得分:0)

  

如何让第二个循环继续工作多次   用户想要。对于用户输入的员工数量是多少?

for (int count=0; count<numberOfEmployees; count++)
{
    cout << "Name: \n";
    cin >> employees[ count ].name;

    cout << "Title: \n";
    cin >> employees[ count ].title;

    cout << "Gross: \n";
    cin >> employees[ count ].gross;

    cout << "Tax: \n";
    cin >> employees[ count ].tax;

    cout << "Net: ";
    cin >> employees[ count ].net;
    //Ask user if he wants to add more employees, if no break the loop else iterate again
     cout<<"Do u want to continue: 1 to continue 0 to exit");
     cin>>flag;
     if(flag==0)
          break;
}

}