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()函数中拥有的变量是在那里新创建的,并且与您在main()函数的 while 循环中拥有的变量不同。您在该函数中显示的所有变量都未初始化,因此您不知道它们的实际值是什么。考虑向函数添加参数,以便在调用它时可以将用户输入变量传递给它,以便显示要显示的值。

于 2012-08-07T20:26:20.237 回答
1

查看您的 display_cust_data。它如何获得有关显示内容的任何信息?

于 2012-08-07T20:24:27.333 回答