我想做一个'if'语句,如果变量小于80 t = 0但是如果变量超过t = x-80

时间:2010-08-20 00:25:44

标签: c++

嗨,我刚开始学习c ++。我试图找出如何根据另一个变量进行变量更改。它显示了一个奇怪的答案当我尝试它从它得到它的idk。无论如何我只是把我的代码放在这里,希望有人理解我在做什么。

#include <iostream>

long int mult (float hours,float payrate,float tax,float overtimerate,float overtimehours,float overtimeday,float insurance);

int main()
{
float insurance;
float hours;
float payrate;
float tax;
float overtimerate;
float overtimehours;
float overtimeday;
insurance=.81;
overtimehours=0;
overtimerate=1.5;
tax=4.93372123545367;
   std::cout<<"Paycheck calculator\n";
   std::cout<<"Enter your hours\n";
   std::cin>>hours;
   std::cin.ignore();
   std::cout<<"Did you work over 8 hours in a day?\n If so enter how much? If none enter 0\n";
   std::cin>>overtimeday;
 if  (hours>80)
{
overtimehours=((hours - 80)+overtimeday);
   }
   std::cout<<overtimehours+overtimeday<<"\n";
   std::cout<<"Enter your pay rate\n";
   std::cin>>payrate;
   std::cin.ignore();
   std::cout<<"Your paycheck should be approximately: "<<((overtimeday+overtimehours)*(overtimerate*payrate
))+(((hours-overtimehours)*payrate)-((((hours-(overtimeday+overtimehours))*payrate)/tax)
-insurance))<<"\n";
}

5 个答案:

答案 0 :(得分:9)

在表达式中:

x=(t*w)+((hours-t)*rate);

您正在使用t,即使从未设置t。 此时t将不确定,并且可能具有任何价值。

hoursrate相同。

你的编译器应该给你关于未初始化变量的警告。

编辑更多地查看您的代码,似乎您正在尝试为小时,费率和t建立“规则”,然后填写值,期望这些“规则”将被保留。

C ++ 就像这样工作。它是一种顺序语言,意味着每个指令都会执行一次,从上到下读取。

您需要将程序流程更改为:

  1. 收集变量
  2. 做计算和逻辑
  3. 输出答案。
  4. 似乎你已经颠倒了第1步和第2步,试图在收集变量之前设置计算。

答案 1 :(得分:2)

在使用之前,您需要为t指定一个值。说float t;实际上不会给它一个有意义的价值。同上hoursrate。在之前分配 {。}}。

答案 2 :(得分:2)

您尚未初始化小时数(初始化所有本地变量始终是一种好习惯)

另请注意,'hours'的类型为float,并且这些未完全表示,因此您与80的比较可能会产生与预期不同的结果。

答案 3 :(得分:1)

我看到你宣布了一个函数:

int mult (float x,float t,float w,float hours, float rate,float z); 

你永远不会做任何事情。我认为main中的代码大多属于mult,主要应该为这些变量赋值或者提示用户使用它们并从cin读取它们。您稍后会对某些变量执行此操作,但之后不会使用您所读的内容。

我同意@quantumSoup btw,你的变量命名不佳。此外,您的代码实际上是奇怪的顺序。这使得很难猜出你想要什么。

答案 4 :(得分:1)

其他答案指出你的代码中存在非常严重的缺陷,所以你应该认真对待它们,但有一点,主题暗示你正在努力,这没有解释。让我试试。

我认为你正在努力计算overtime。您从用户处获取输入,指示hours工作的数量。如果该数字小于或等于80,则没有加班。否则加班时间等于hours - 80,对吧?

您可以像这样用C ++表达逻辑:

float hours;
float overtime;

//....

cout<<"enter the amount of hours you have worked\n";
cin>>hours;

if(hours > 80)
{
    overtime = hours - 80;
}
else
{
    overtime = 0;
}

如果您将overtime变量初始化为0,则可以省略else部分。

float hours;
float overtime = 0;

//....

cout<<"enter the amount of hours you have worked\n";
cin>>hours;

if(hours > 80)
{
    overtime = hours - 80;
}