好吧,我正在尝试在我的编程书中做一个练习,我很难准确地了解它想要什么。
我的“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/