【问题标题】:Array not displaying proper output数组未显示正确的输出
【发布时间】:2017-04-04 15:46:42
【问题描述】:

我正在编写这个程序来计算员工的工作时间。如果员工最终工作超过 40 小时,那么每超过 40 小时,他将获得额外的时间半。我的问题是关于输出。在输出中,它显示了销售税、联邦税、总收入和净额;但是,如果员工输入他的工作时间少于 40 小时,则一切正常;但是,一旦员工输入由于某种原因他工作了 40 多个小时,它就会显示税款和净额总额为 0.00。

例如,如果小于 40,则会显示以下内容。

F-Name: L-Name: HorsWrked: HrlyRate: TimeHalf: S-Tax: F-Tax: Fica: Gross:

员工最后 39.00 22.00 1.50 60.06 128.70 34.32 858.00

如果超过40,则显示如下。

F-Name: L-Name: HorsWrked: HrlyRate: TimeHalf: S-Tax: F-Tax: Fica: Gross:

员工最后 45.00 22.00 1.50 0.00 0.00 0.00 0.00

感谢任何提示、提示、建议。``

#include <iostream>
#include <iomanip>

using namespace std;

int main()



{
//Set variables
int const size = 2;
double  timeHalf = 0.0, hoursWorked[size], gross[size], net[size], hourlyRate[size], totalTax;
string firstName[size], lastName[size];
const double stateTax = 0.07, fedTax = 0.15, fica = 0.04;
double sTax = 0.0, fTax = 0.0, fiTax;




for(int i = 0; i < size; i++)           //Initialize for loop
{

    cout<<"Please enter your first name? " <<endl;          //Display first name
    cin>>firstName[i];
    cout<<"Please enter your last name? " <<endl;           //Display last name
    cin>>lastName[i];
    cout<<"How many hours did you work? " <<endl;           //Dispaly hours worked
    cin>>hoursWorked[i];
    cout<<"What's the hourly rate? " <<endl;                //Display hourly rate
    cin>>hourlyRate[i];




  if(hoursWorked[i] < 40)
  {
      gross[i] = hoursWorked[i] * hourlyRate[i];

  }


  else if( hoursWorked[i] > 40)
  {
      gross[i] = hoursWorked[i] * (hourlyRate[i] * timeHalf);


  }
}

cout<<" \t\tXYX \n ";
cout<<"F-Name: L-Name: HorsWrked: HrlyRate: TimeHalf: S-Tax: F-Tax: Fica: Gross: Net: \n";

for(int i = 0; i < size; i++)
{

    sTax = gross[i] * stateTax;
    fTax = gross[i] * fedTax;
    fiTax = gross[i] * fica;
    totalTax = gross[i] * (stateTax + fedTax + fica);
    timeHalf = 1.5;
    net[i] = gross[i] - totalTax;


    cout<<firstName[i]<<"\t " << setw(10) <<fixed <<setprecision(2) << lastName[i]<<"\t "
    << hoursWorked[i]<<"\t " <<hourlyRate[i] <<"\t " <<timeHalf<<"\t " <<sTax <<"\t "
    <<fTax <<"\t " <<fiTax <<"\t " <<gross[i] <<"\t " <<net[i] <<"\t ";
}
}

【问题讨论】:

  • 您确定将值设置为timeHalf,因为它看起来不像。此外,如果工作时间为 40 小时,则仅高于或低于 40 小时,您不处理
  • 如果员工工作时间超过 40 小时,前 40 小时是特殊的,还是只有超过 40 小时的小时数需要特殊处理?
  • 你会得到“超过 40 小时的额外时间半”,但你所有的时间都在做一个半时间。
  • @Tas 我完全忽略了 timehalf,以为我设置了一个值,但没有。这最终解决了我的问题。

标签: c++ c++11


【解决方案1】:

因为在您的条件下,您检查了if(hoursWorked[i] &lt; 40)if(hoursWorked[i] &gt; 40),但没有if(hoursWorked[i] == 40) 的条件。您可能想在这些条件之一(&gt;=&lt;=)上使用 -or-equal 运算符。

【讨论】:

    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 2013-05-15
    • 2023-03-26
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多