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;
   }

関数内の変数の使用方法と関係があると考えています。

あなたが与えることができるプッシュをありがとう!

4

3 に答える 3

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なぜですか?

于 2012-08-07T20:23:34.043 に答える
1

display_cust_data を見てください。何を表示するかについての情報をどのように取得しますか?

于 2012-08-07T20:24:27.333 に答える
1

ユーザー入力変数を表示関数に渡す方法を見つける必要があります。関数にある変数はdisplay_cust_data()そこで新しく作成され、関数の while ループにある変数と同じではありませんmain()。その関数で表示する変数はすべて初期化されていないため、それらの値が実際にどうなるかわかりません。関数を呼び出すときにユーザー入力変数を関数に渡して、表示したい値を表示できるように、関数に引数を追加することを検討してください。

于 2012-08-07T20:26:20.237 に答える