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;

C および C++ では、基本値型には初期値がありません。

通常のローカル変数を宣言する場合、その値はデフォルトでは不定です。しかし、宣言と同時に変数に具体的な値を格納したい場合があります。そのために、変数を初期化できます。

stringオブジェクトはデフォルトのコンストラクターを使用して初期化されるため、変数 に対して同じエラーは発生しません。

于 2013-10-18T05:22:53.343 に答える
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 に答える