问题是,在执行时,我得到的roundCost
的值是
类似于-1220673834的东西。我发布了整个程序,因为我没有
确定我哪里出错了。
注意:我被要求将所有变量都视为double
类型,之后,
roundCost
应为int
类型。所以我在那里使用了类型转换。
#include<iostream>
using namespace std;
class Restaurant{
private:
double tip, tax,totalCost,mealCost, tipPercent, taxPercent;
int roundCost;
public:
int tipCalc(double)
{
tip=mealCost*(tipPercent/100);
return tip;
}
int taxCalc(double)
{
tax=mealCost*(taxPercent/100);
return tax;
}
int totalCost1()
{
totalCost=mealCost+tip+tax;
return totalCost;
}
int roundCost1(double)
{
roundCost=(int)totalCost;
return roundCost;
}
}; // class ends
int main()
{
double mealCost, tipPercent, taxPercent, totalCost;
int roundCost;
Restaurant ob1;
cout<<"\n Enter mealCost \n";
cin>>mealCost;
cout<<"\n Enter mealtipPercent \n";
cin>>tipPercent;
cout<<"\n Enter mealtaxPercent \n";
cin>>taxPercent;
ob1.tipCalc(tipPercent);
ob1.taxCalc(taxPercent);
ob1.totalCost1();
ob1.roundCost1(totalCost);
cout<<"\n Round of cost is "<<roundCost<<endl;
return 0;
}
答案 0 :(得分:0)
您似乎缺少的一件事是,您的类中的变量与主变量的范围不同。你可以从cin中设置主食中的膳食成本,但是你从未将这个变量传递给课堂。我改变了这一点,使用一个构造函数来设置创建时的膳食成本。在你创建的每个类中,你应该总是添加一个构造函数。此外,您应该命名传递给函数的变量,然后在函数中使用相同的名称。例如,在税率百分比函数中,我传递double t,t是百分比,然后我们在计算中使用t。您的圆形成本变量也是私有的,因此您需要通过函数输出它。
int函数也将返回一个值,如果你使用这种类型的函数,你应该将返回变量赋值给某些东西,但由于你只是在你的类中设置东西,你可以使用void函数。你在main中使用一个值的唯一时间是圆形成本,所以这个值可以让它返回一个值。因为它是int(我假设你想要的)它将不会得到小数点,它将简单地切断总成本中的任何小数(即75.75将变为75)。
#include<iostream>
using namespace std;
class Restaurant{
private:
double tip, tax,totalCost,mealCost;
int roundCost;
public:
Restaurant (double m)
{
mealCost = m;
}
void tipCalc(double t)
{
tip=mealCost*(t/100.0);
}
void taxCalc(double t)
{
tax=mealCost*(t/100.0);
}
void totalCost1()
{
totalCost=mealCost+tip+tax;
}
int roundCost1()
{
roundCost=(int)totalCost;
return roundCost;
}
}; // class ends
int main()
{
double mealCost, tipPercent, taxPercent, totalCost;
int roundCost;
cout<<"\n Enter mealCost \n";
cin>>mealCost;
Restaurant ob1(mealCost);
cout<<"\n Enter mealtipPercent \n";
cin>>tipPercent;
cout<<"\n Enter mealtaxPercent \n";
cin>>taxPercent;
ob1.tipCalc(tipPercent);
ob1.taxCalc(taxPercent);
ob1.totalCost1();
cout<<"\n Round of cost is "<<ob1.roundCost1()<<endl;
return 0;
}
下次尝试使用调试器进行更多研究,定期输出cout语句并搜索找到的错误,但这次会给你一个有效的代码。