/* given my code im getting an error in main with the following lines : Checking
ID: 3766093 • Letter: #
Question
/*
given my code im getting an error in main with the following lines :
Checking C[5];
Saving S[5];
*/
#include <iostream>
#include <sstream>
#include <string.h>
using namespace std;
class Account
{
public:
long acctNum;
double balance;
double interest;
long getAcct()
{
return acctNum;
}
double getBalance()
{
return balance;
}
void setAcct(long acct)
{
acctNum=acct;
}
void setBalance(double bal)
{
balance=bal;
}
Account(long acct, double bal)
{
acctNum=acct;
balance=bal;
}
string toString()
{
stringstream ss;
string ans;
ss<<" Checking Account # "<<acctNum<<" Balance "<<balance;
ans=ss.str();
return ans;
}
virtual double computeIntr(int years);
};
class Checking :public Account
{
public:
virtual double computeIntr(int years)
{
int R=2;
if(balance>700)
{
interest=balance*years* (R/100);
}
return interest;
}
Checking(long acct, double bal):Account(acct,bal)
{
}
string toString()
{
stringstream ss;
string ans;
ss<<" Checking Account # "<<acctNum<<" Balance "<<balance;
ans=ss.str();
return ans;
}
};
class Saving :public Account
{
public:
double intRate;
double getRate()
{
return intRate;
}
void setRate(double rate)
{
intRate=rate;
}
double computeIntr(int years)
{
double i;
i=(1+intRate)*years*balance-balance;
return i;
}
Saving(long acct, double bal, double rate):Account(acct,bal)
{
intRate=rate;
}
string toString()
{
stringstream ss;
string ans;
ss<<" Saving Account # "<<acctNum<<" Balance "<<balance <<" Rate "<<intRate;
ans=ss.str();
return ans;
}
};
int main()
{
Account *ACC[100];
Checking C[5];
Saving S[5];
int a=100;
int b=200;
for(int i=0;i<5;i++)
{
C[i].setAcct(a++);
C[i].setBalance(1000+(10*Checking.getAcct()));
Account[i] = C[i];
}
for(int i=0;i<5;i++)
{
S[i].setAcct(a++);
S[i].setBalance(1000+(10*Saving.getAcct()));
Account[i+5] = S[i];
}
char q;
char ans;
int acc;
while(ans!='q')
{
cout<<" Account#";
cin>>accountNumber;
if(accountNumber>99 && accountNumber<105)
{
acc=accountNumber-100;
}
else
acc= accountNumber-200+5;
cout<<" > s - Set balance";
cin>>balance;
ACC[acc]->setBalance(balance);
cout<<" > d - Display using toString function";
cin>>ans;
if(ans=='d')
{
cout<<ACC[acc]->toString();
}
cout<<" > i - Enter number of years to get interest";
cin>>years;
cout<<ACC[acc]->computeIntr(years);
cout<<" > q - quit processing this account");
cin>>q;
}
return 0;
}
Explanation / Answer
Hi,
You are missing the defualt constructor for Checking and Saving class, and also your main class Account. So simply, add the default constructors, and your program will run fine :) See below:
#include <iostream>
#include <sstream>
#include <string.h>
using namespace std;
class Account
{
public:
long acctNum;
double balance;
double interest;
Account()
{
}
long getAcct()
{
return acctNum;
}
double getBalance()
{
return balance;
}
void setAcct(long acct)
{
acctNum=acct;
}
void setBalance(double bal)
{
balance=bal;
}
Account(long acct, double bal)
{
acctNum=acct;
balance=bal;
}
string toString()
{
stringstream ss;
string ans;
ss<<" Checking Account # "<<acctNum<<" Balance "<<balance;
ans=ss.str();
return ans;
}
virtual double computeIntr(int years);
};
class Checking :public Account
{
public:
virtual double computeIntr(int years)
{
int R=2;
if(balance>700)
{
interest=balance*years* (R/100);
}
return interest;
}
Checking()
{
}
Checking(long acct, double bal):Account(acct,bal)
{
}
string toString()
{
stringstream ss;
string ans;
ss<<" Checking Account # "<<acctNum<<" Balance "<<balance;
ans=ss.str();
return ans;
}
};
class Saving :public Account
{
public:
Saving()
{
}
double intRate;
double getRate()
{
return intRate;
}
void setRate(double rate)
{
intRate=rate;
}
double computeIntr(int years)
{
double i;
i=(1+intRate)*years*balance-balance;
return i;
}
Saving(long acct, double bal, double rate):Account(acct,bal)
{
intRate=rate;
}
string toString()
{
stringstream ss;
string ans;
ss<<" Saving Account # "<<acctNum<<" Balance "<<balance <<" Rate "<<intRate;
ans=ss.str();
return ans;
}
};
int main()
{
Account *ACC[100];
Checking C[5];
Saving S[5];
int a=100;
int b=200;
for(int i=0;i<5;i++)
{
C[i].setAcct(a++);
C[i].setBalance(1000+(10*Checking.getAcct()));
Account[i] = C[i];
}
for(int i=0;i<5;i++)
{
S[i].setAcct(a++);
S[i].setBalance(1000+(10*Saving.getAcct()));
Account[i+5] = S[i];
}
char q;
char ans;
int acc;
while(ans!='q')
{
cout<<" Account#";
cin>>accountNumber;
if(accountNumber>99 && accountNumber<105)
{
acc=accountNumber-100;
}
else
acc= accountNumber-200+5;
cout<<" > s - Set balance";
cin>>balance;
ACC[acc]->setBalance(balance);
cout<<" > d - Display using toString function";
cin>>ans;
if(ans=='d')
{
cout<<ACC[acc]->toString();
}
cout<<" > i - Enter number of years to get interest";
cin>>years;
cout<<ACC[acc]->computeIntr(years);
cout<<" > q - quit processing this account";
cin>>q;
}
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.