输出错误。垃圾值

时间:2016-05-30 12:03:45

标签: c++ function oop

问题是,在执行时,我得到的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;
}

1 个答案:

答案 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语句并搜索找到的错误,但这次会给你一个有效的代码。