0

这是一个用于基本 C++ 编程课程的程序。变量 foodPrice 和 bisPrice 给了我在没有被初始化的情况下使用的错误,并且它们不能通过引用传递。我不确定如何初始化它们。请帮忙。谢谢

using namespace std;

void getBiscuits( string &, double & );
void getDryFood( string & , double & );
void processData( double, double , double & , double & , double & , double , double );
void displayOrder( string , string , string , double , double , double , double , double , double , double , double , double , double );

const double foodCost = 30;
const double bisCost = 10;
const double salesTax = .07;

int main()
{
    //declare variables
    string name;
    double numBis;
    string bis;
    string dryFood;
    double foodNum;
    double bisPrice;
    double foodPrice;
    double tax = 0;
    double total = 0;
    double subTotal = 0;

    //get data from user
    cout << "Welcome to The Big Dog's Food Panty" << endl;
    cout << "Please tell us your first and last name?" << endl;
    getline(cin, name);
    cout << "Thanks " << name << endl;
    system ("cls");
    getBiscuits( bis , numBis ) ;
    getDryFood( dryFood , foodNum ) ;
    processData( numBis , foodNum , subTotal , tax , total , bisPrice , foodPrice ) ;
    displayOrder( name ,  bis , dryFood , bisPrice , numBis , bisCost , foodPrice , foodNum , foodCost , subTotal , tax , salesTax , total ) ;

    // stop to let the user read the far
    system ("pause");
}

void getBiscuits( string &bis , double &numBis )
{
    string dummyVariable;

    cout << "Would you like the Spicy Chicken or BBQ Beef biscuits?" << endl;
    getline(cin, bis);
    system ("cls");
    cout << "How many five lb bags of " << bis << " would you like?" << endl;
    cin >> numBis;
    getline(cin, dummyVariable);
    system ("cls");
}

void getDryFood( string &dryFood , double &foodNum )
{
    cout << "Would you like Salmon and Peas or Chicken and Rice dry food?" << endl;
    getline(cin, dryFood);
    system ("cls");
    cout << "How many 28 lbs bags of " << dryFood << " would you like?" << endl;
    cin >> foodNum;
    system ("cls");
}

void processData( double numBis , double foodNum , double &subTotal ,double &tax , double &total , double bisPrice , double foodPrice )
{
    //calculate
    bisPrice = numBis * bisCost;
    foodPrice = foodNum * foodCost;
    subTotal = bisPrice + foodPrice;
    tax = subTotal * salesTax;
    total = subTotal + tax;
}

void displayOrder( string name ,  string bis , string dryFood , double bisPrice , double numBis , double bisCost , double foodPrice , double foodNum , double foodCost , double subTotal ,double tax , double salesTax , double total )
{
    // display cost
    cout << "Thanks " << name << " for your order!" << endl;
    cout << numBis << setprecision(2) << fixed << " five lbs bags of " << bis << " at $10.00 each is $" << bisPrice << endl;
    cout << setprecision(0) << fixed <<foodNum << setprecision(2) << fixed << " 28 lbs bags of " << dryFood << " at $30.00 each is $" << foodPrice << endl;
    cout << setprecision(2) << fixed << "Your subtotal is $" << subTotal << endl;
    cout << setprecision(2) << fixed << "Your sales tax is $" << tax << endl;
    cout << setprecision(2) << fixed << "Your total is $" << total << endl;
}
4

3 回答 3

0

只需这样做,错误就会消失:

double bisPrice = 0;
double foodPrice = 0;

我认为你应该很明显你没有提供任何声明价值:)

是的,也不要忘记这些:

string name = "";
double numBis = 0;
string bis = "";
string dryFood = "";
double foodNum = 0;

函数中的变量具有自动存储功能,因此默认情况下它们不会初始化为值。

于 2013-10-18T05:17:52.220 回答
0

您没有定义它们的初始值。

double bisPrice; 
double foodPrice;

改成:

double bisPrice = 0;
double foodPrice = 0;
于 2013-10-18T05:18:22.390 回答
0

要修复编译器警告,请初始化变量:

double bisPrice = 0; 
double foodPrice = 0;

在 C 和 C++ 中,基本值类型没有初始值

当声明一个常规的局部变量时,它的值默认是未确定的。但是您可能希望一个变量在声明它的同时存储一个具体的值。为此,您可以初始化变量。

对象将使用其默认构造函数进行初始化,这就是string变量没有相同错误的原因。

于 2013-10-18T05:22:53.343 回答