2012-08-07 62 views
0

我正在爲這個任務開發這個程序,所以我不想得到答案......只是朝正確的方向推進。函數沒有返回用戶輸入的值

我已經編寫了一個程序,用戶在這個程序中輸入一個3位數的ID(必需)和一個KWh的月份。在輸入標準後,它將打印出一份簡短的摘要+每位用戶當月的費用。然後將其封閉在一個循環中,詢問是否還有其他ID要輸入。

下面是我開的代碼和循環結構:

#include <iostream> 
#include <string> 
#include <iomanip> 
#include <windows.h> 

using namespace std; 

//function prototypes 
string get_user_ID(); 
int get_cust_kwh(); 
string display_cust_data(); 

int main() 
{ 
string userID; 
int userKWH; 
char answer; 

while ((answer !='N')&&(answer !='n')){ 
    userID = get_user_ID(); 
    userKWH =get_cust_kwh(); 

    display_cust_data(); 

    cout << "\n\nWould you like to add another utility ID? : (Y or N)"; 
    cin >> answer; 

    } 
} 

system("pause") 
return 0; 

我可以得到循環正常工作,但我的功能似乎並沒有要返回該用戶輸入的值。由於我對功能很陌生,我相信這是一個愚蠢的錯誤,但是一直讓我發瘋。這裏有的功能:

**********function definitions********** 
string get_user_ID(){ 
    string usrID; 
    cout << "\n\nPlease enter in your 3-digit utility ID: "; 
    cin >> usrID; 
    return usrID; 
} 

int get_cust_kwh(){ 
    int usrKWHs; 
    cout << "Please enter the total KWH used for the month: "; 
    cin >> usrKWHs; 
    return usrKWHs; 
} 

string display_cust_data(){ 
    string usrID; 
    int usrKWHs; 
    double userCharge; 

    cout << "\n\nUSER ID  KWHours  Charge($)\n"; 
    cout << fixed << setprecision(2); 
    cout << usrID << "   " << usrKWHs << "   " << userCharge << endl; 
    } 

我在想使用函數中的變量的方式。

感謝您的任何推動,你可以給!

+2

提示:使用調試器進行操作。問題應該是顯而易見的,因爲你用bug來進入函數。 – 2012-08-07 20:25:14

+1

你的最後一個函數的返回類型是'string',但沒有'return'語句。而且裏面的所有變量都是本地的,你需要傳遞在main中作用域的變量。 – ChiefTwoPencils 2012-08-07 20:26:24

+0

一般你不想做'cin >>',cin不會進行類型檢查或任何類型的調用會導致奇怪。另外,您不打印您初始化的變量。您正在打印剛剛創建的未初始化變量。仔細看看你最後的方法。 – steveg89 2012-08-07 20:26:49

回答

4

問題是display_cust_data()不知道主要功能範圍內的變量。你打印的只是具有垃圾值的局部變量。

string display_cust_data(){ 
    string usrID; // This is a different variable and is not equivalent to the 
        // variable in main. 

也是爲什麼函數的返回類型爲string

1

看看你的display_cust_data。它如何獲得有關顯示內容的任何信息?

1

您需要找到一種方法將用戶輸入變量傳遞給您的顯示功能。你在display_cust_data()函數中的變量是新創建的,並且與main()函數中while循環中的變量不同。您在該函數中顯示的所有變量都是未初始化的,因此您不知道它們的值實際上會是什麼。考慮向函數中添加參數,以便在調用它時,可以將用戶輸入變量傳遞給它,以便顯示要顯示的值。