2013-08-22 188 views
-6

我已經編譯並正確運行我的程序,但似乎變量總和沒有通過引用傳遞,它仍然爲0。這裏的任何幫助是代碼。變量沒有通過引用傳遞

#include "VendingMachine.h" 

int VendingMachine::MakeSelection(int ItemPrice[], int NumItems[],int &sum){ 

    int total_cost = 0; 

    cout << "Enter your choice: "; 
    cin >> choice; 

    if(choice >= 1 && choice <= 9){ 
     while (choice != 0){ 
      NumItems[(choice-1) % 10]--; 
      total_cost += ItemPrice[(choice-1)%10]; 
      choice/=10; 

     } 
    } 
     sum = total_cost; 
     return sum; 
} 

Main.cpp的

#include "VendingMachine.h" 

int main() 
{ 
    int Denominations = 5; 

    int Coins[] = {100, 50, 20, 10, 5}; 
    int NumCoins[] = {10, 10, 10, 10, 10}; //assume we have 10 coins of each denomination 

    const int Items = 9; 
    int sum, deposit; 

    int ItemPrice[ ] = { 75, 120, 120, 100, 150, 95, 110, 50, 120 }; //price in cents 
    int NumItems[ ] = { 10, 10, 10, 10, 10, 10, 10, 10, 10 }; 

    VendingMachine caller; 

    caller.ShowMenu(); 
    cout << endl; 

    cout << "Enter your money: "; 
    cin >> deposit; 

    caller.MakeSelection(ItemPrice,NumItems,sum); 
    cout <<"The total cost is " << sum << endl; 

    system("PAUSE"); 
    return 0; 
} 

Vending.h

#include <iostream> 
#include <cmath> 
#include <string> 

using namespace std; 

int total_cost; 
int Coins[5]; 
int NumCoins[5]; 
int ItemPrice[9]; 
int NumItems[9]; 

class VendingMachine{ 
public: 
    int MakeSelection(int ItemPrice[], int NumItems[],int &sum); 
    void ReturnChange(int& input,int& sum, int Coins[],int NumCoins[]); 
    void ShowMenu(); 
    void DisplayErrorMessage(int error); 
    void PrintConfidentialInformation(int Denominations, int Items, int Coins[], int NumCoins[], int ItemPrice[] , int NumItems[]); 
private: 
    int choice; 
    string Password; 
    int deposit2; 
}; 

的總成本應該返回合計值在MakeSelection CPP但它仍然會返回一個0 ..?

+4

'總和'沒有使用。這是一個警告。 – chris

+0

函數沒有返回值,所以你得到未定義的行爲。 – 0x499602D2

+0

你應該在你的編譯器中啓用一些標誌... – nouney

回答

1

MakeSelection根本不使用可變總和。

0

你從來沒有實際使用金額,因此該值爲0

+1

其實這個變量是未初始化的。 –

0

sum變量沒有被使用,您的通話MakeSelection沒有返回任何值。