Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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