我的循环没有循环

时间:2013-04-16 15:05:00

标签: c++ while-loop

enter code here
#include<iostream>
#include<iomanip>
using namespace std;


int main()
{
    double employeeNum    = 0.0;            double totalEmployees    = 0.0;
    double hourlyRate    = 0.0;            double totalhoursWork    = 0.0;
    double hoursWork    = 0.0;            double totalnetPay        = 0.0;
    double grossPay        = 0.0;            double averagehoursWork    = 0.0;
    double netPay        = 0.0;            double totalwithHoldings = 0.0;
    double withHoldings    = 0.0;


    cout <<" Enter Employee Number or 9999 to Stop:";
    cin >> employeeNum;
    cout <<"Enter hourly rate:";
    cin >> hourlyRate;
    cout <<"Enter hours worked:";
    cin >> hoursWork;

    while(employeeNum != 9999)
    {

        if (hoursWork >= 40)
        {
            grossPay= hoursWork * hourlyRate;
            cout <<" Gross Weekly Pay:" << grossPay << endl;
        }
        else (hoursWork > 40);
        {
            grossPay= hoursWork * hourlyRate*1.5;
            cout <<" Gross Weekly Pay:" << grossPay << endl;
        }

        while( grossPay > 1,000.00)
        {
            withHoldings= grossPay/ 0.28;

        }
        while( grossPay < 1,000.0)
        {
            withHoldings= grossPay/ 0.21;
        }

        netPay= grossPay-withHoldings;
        cout <<" Net Weekly Pay:" << netPay << endl;

        cout <<" Enter Employee Number or 9999 to Stop:";
        cin >> employeeNum;
        cout <<"Enter hourly rate:";
        cin >> hourlyRate;
        cout <<"Enter hours worked:";
        cin >> hoursWork; 
    }   
    system("pause");
    return 0;
}

从空白解决方案开始,编写程序以提示用户输入员工编号,小时费率和工作小时数。计算并显示员工编号,每周工资总额和每周工资净额。每周工资总额计算为前40个小时的工作时间小时数,再加上小时数超过40小时的1.5小时工资。净工资总额减去扣缴额。如果总薪酬超过1,000美元,则预扣税计算为总薪酬的28%,如果总薪酬为1000美元或更低,预扣税则为总薪酬的21%。用户的所有输入都应验证为有效。每小时费率必须大于$ 7.25且小于$ 100.00。工作小时数必须大于0且小于120.如果用户输入无效数据显示和相应的错误消息并要求用户重新输入。使用后测试循环重复此过程,直到用户输入9999,程序应显示输入的员工总数,工作总时数,平均工作小时数,总净工资和总预扣金额。所有数字输出都应以固定表示法显示,并带有两位小数

3 个答案:

答案 0 :(得分:3)

while( grossPay > 1000.00)
        {
            withHoldings= grossPay/ 0.28;

        }

条件为真,然后保持为真,循环将永远循环,或者不循环,并且语句永远不会执行。

while更改为if或修改循环内的grossPay

另外,不要在浮点常量中包含逗号。

答案 1 :(得分:1)

你的循环没有执行,因为你的浮点数中有一个','常量。使用1000.00而不是1,000.00

答案 2 :(得分:0)

你有第二个条件重复第一个条件((hoursWork > 40);)并且在条件结束时有一个分号。在发布此处之前请仔细检查语法。