好吧,我正在尝试在我的编程书中做一个练习,我很难准确地了解它想要什么。

我的“enterAccountData()”函数假设是询问用户一个帐号和一个余额,两者均不能为负,并且帐号不能小于1000

第二个是我被困在“computeInterest()”上的那个函数。此函数假定接受一个整数参数,该参数表示帐户将获得利息的年数。然后,该功能将显示上一个功能的帐号,并根据BankAccount类附带的利率在每年年底显示其期末余额。 (“BankAccount”上的利率必须是一个恒定的静态字段,该字段设置为3%(0.03))。

所以我的问题是这样的:当调试器不允许我将字段实际保持为常量时,如何设置“computeInterest()”以使其也可以使用常量静态字段来计算利息?我现在不试图阻止任何随机错误的发生,而只是想弄清这本书到底是什么。这是我的代码。

#include <iostream>
#include <iomanip>

using namespace std;

class BankAccount
{
  private:
    int accountNum;
    double accountBal;
    static double annualIntRate;
  public:
    void enterAccountData(int, double);
    void computeInterest();
    void displayAccount();
};

//implementation section:
double BankAccount::annualIntRate = 0.03;
void BankAccount::enterAccountData(int number, double balance)
{
    cout << setprecision(2) << fixed;
    accountNum = number;
    accountBal = balance;

    cout << "Enter the account number " << endl;
    cin >> number;

    while(number < 0 || number < 999)
    {
        cout << "Account numbers cannot be negative or less than 1000 " <<
                "Enter a new account number: " << endl;
        cin >> number;
    }

    cout << "Enter the account balance " << endl;
    cin >> balance;

    while(balance < 0)
    {
        cout << "Account balances cannot be negative. " <<
                "Enter a new account balance: " << endl;
        cin >> balance;
    }
    return;
}
void BankAccount::computeInterest()
{
    const int MONTHS_IN_YEAR = 12;
    int months;
    double rate = 0;
    int counter = 0;
    BankAccount::annualIntRate = rate;

    cout << "How many months will the account be held for? ";
    cin >> months;
    counter = 0;
    do
    {
        balance = accountBal * rate + accountBal;
        counter++;
    }while(months < counter);
    cout << "Balance is:$" << accountBal << endl;
}

int main()
{
    const int QUIT = 0;
    const int MAX_ACCOUNTS = 10;
    int counter;
    int input;
    int number = 0;
    double balance = 0;

    BankAccount accounts[MAX_ACCOUNTS];
    //BankAccount display;

    counter = 0;

    do
    {

        accounts[counter].enterAccountData(number, balance);
        cout << " Enter " << QUIT << " to stop, or press 1 to proceed.";
        cin >> input;
        counter++;
    }while(input != QUIT && counter != 10);

    accounts[counter].computeInterest();

    system("pause");
    return 0;
}

最佳答案

常量字段很容易:

class BankAccount
{
  ...
  const static double annualIntRate = 0.03;
  ...
}

(您的调试器是否对此表示抱怨?我使用的是gcc 4.2.1)但是您的代码中还有其他麻烦的事情,例如computeInterest尝试将rate设置为零的方式,以及while循环...需要工作。

编辑:
一个好的原则值得进行一百次具体的更正。开发复杂的功能时,请勿尝试一次完成所有操作。从一个简单的部分开始,使其完美运行,然后进行构建。 F'rinstance,computeInterest。您需要几个独立的部分来进行工作:正确地遍历while循环次数,计算利息增量,跟踪余额-现在computeInterest不能正确执行所有这些操作。一次解决一个问题,或者根据需要并行解决,但不要合并不起作用的部分。

关于c++ - 我需要类帮助。 (C++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5287380/

10-12 22:29