2012-08-07 6 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

팁 : 디버거를 단계별로 실행하십시오. 버그가있는 함수로 들어가면 문제가 분명해진다. –

+1

마지막 함수의 반환 형식은'string'이지만'return' 문은 없습니다. 그리고 내부의 모든 변수는 지역 변수이므로 main에 범위가 지정된 변수를 전달해야합니다. – ChiefTwoPencils

+0

일반적으로'cin >>'을하고 싶지는 않습니다. cin은 typechecking이나 아무것도하지 않으며 그 타입의 호출은 이상하게 만들 수 있습니다. 또한, 사용자가 초기화 한 vars를 인쇄하지 않습니다. 방금 작성한 초기화되지 않은 변수를 인쇄하고 있습니다. 마지막 방법을 잘 살펴보십시오. – steveg89

답변

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 루프에있는 변수와 다릅니다. 이 함수에 표시되는 모든 변수는 초기화되지 않으므로 실제로 그 값이 무엇인지 알 수 없습니다. 함수에 인수를 추가하여 함수를 호출 할 때 사용자 입력 변수를 전달하여 표시 할 값을 표시 할 수 있도록하십시오.

관련 문제