嗨,我刚开始学习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";
}
答案 0 :(得分:9)
在表达式中:
x=(t*w)+((hours-t)*rate);
您正在使用t
,即使从未设置t
。
此时t
将不确定,并且可能具有任何价值。
与hours
和rate
相同。
你的编译器应该给你关于未初始化变量的警告。
编辑更多地查看您的代码,似乎您正在尝试为小时,费率和t建立“规则”,然后填写值,期望这些“规则”将被保留。
C ++ 不就像这样工作。它是一种顺序语言,意味着每个指令都会执行一次,从上到下读取。
您需要将程序流程更改为:
似乎你已经颠倒了第1步和第2步,试图在收集变量之前设置计算。
答案 1 :(得分:2)
在使用之前,您需要为t
指定一个值。说float t;
实际上不会给它一个有意义的价值。同上hours
和rate
。在之前分配 {。}}。
答案 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;
}