这是一个基本C ++编程类的程序。可变食品价格和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;
}
答案 0 :(得分:0)
只需这样做,错误就会出现:
double bisPrice = 0;
double foodPrice = 0;
我认为你应该明白你没有提供任何声明价值:)
是的,不要忘记这些:
string name = "";
double numBis = 0;
string bis = "";
string dryFood = "";
double foodNum = 0;
函数中的变量具有自动存储功能,因此默认情况下它们不会初始化为值。
答案 1 :(得分:0)
您没有定义他们的初始值。
double bisPrice;
double foodPrice;
更改为:
double bisPrice = 0;
double foodPrice = 0;
答案 2 :(得分:0)
要修复编译器警告,请初始化变量:
double bisPrice = 0;
double foodPrice = 0;
在C和C ++中,基本值类型没有initial value。
声明常规局部变量时,默认情况下其值未确定。但是,您可能希望变量在声明它的同一时刻存储具体值。为此,您可以初始化变量。
将使用默认构造函数初始化对象,这就是string
变量没有相同错误的原因。