Data structures and algorithms in C++
Data structures and algorithms in C++
2nd Edition
ISBN: 9780470460443
Author: Goodrich
Publisher: WILEY
bartleby

Concept explainers

bartleby

Videos

Expert Solution & Answer
Book Icon
Chapter 1, Problem 12R

Explanation of Solution

Program code:

main.cpp

//include the requird header files

#include <vector>

#include "CreditCard.h"

//use the namespace

using namespace std;

//define the function textCard()

void testCard()

{

    // vector of CC pointers

    vector <CreditCard*> wallet(10);

    //create the credit card details

    wallet[0] = new CreditCard(5391037593875309,"JoBlo",2500);

    wallet[1] = new CreditCard(3485039933951954,"JoBlo",3500);

    wallet[2] = new CreditCard(6011490232942994,"JoBlo",5000);

    //iterate a for loop

    for (int j = 1; j <= 16; j++)

    {

        // explicit cast

        wallet[0] -> chargeIt(double(j));

        // implicit cast

        wallet[1] -> chargeIt(2 * j);

        wallet[2] -> chargeIt(double(3 * j));

    }

    //iterate a for loop

    for (int i = 0; i < 3; i++)

    {

        //print the card details

           cout << *wallet[i];

        //iterate a while loop to get the balance

        while (wallet[i]->getBalance() > 100.0)

        {

            //call the method makePayment

            wallet[i]->makePayment(100.0);

            //print the new balance

            cout << "New balance = " <<

            wallet[i]->getBalance() << "\n";

        }

        //deleting a walllet

        delete wallet[i];

    }

}

//define the main() method

int main()

{

    //First test case

    CreditCard CC = CreditCard(1234, "Bill gates", 2500);

    CC.chargeIt(1000);

    CC.chargeIt(-100);

    CC.chargeIt(500);

    CC.makePayment(-100);

    CC.makePayment(300);

    cout << CC << endl << endl;

    //given test case

    testCard();

    return EXIT_SUCCESS;

}

Explanation:

In the code,

  • Include the required header files.
  • Use the namespace.
  • Define the “testCard()” method.
    • Create vector pointers
    • Create array “wallet[]” to store credit card details.
    • Iterate a “for” loop.
      • Explicit cast.
      • Implicit cast.
    • Iterate a “for” loop.
      • Print the card details.
      • Iterate a “while” loop to get the balance.
        • Call the method “makepayment()”.
        • Print the new balance.
          • Delete a wallet.
  • Define the “main()” function.
    • Enter the credit card details.
    • Call the function “chargeIt()” and “makePayment()” using “CC”.
    • Call the function “testCard()”.
    • Return “EXIT_SUCCESS”.

CreditCard.cpp

//Code for CreditCard.cpp

#include "CreditCard.h"

using namespace std;

//define the constructor CreditCard

CreditCard::CreditCard(long long int no, const string& nm, int lim, double bal)

{

    //declare the required variables

    number = no;

    name = nm;

    limit = lim;

    balance = bal;

}

//define a function chargeIt()

bool CreditCard::chargeIt(double price)

{

    if(price <= 0)

    {

        //print error message when price is negative

        cout << "Error: Input argument must be positive.\n";

        //return false

        return false;

    }

    //if the condition is true

    if (price + balance > double(limit))

    {

        //return false

        return false;

    }

    //add price to balance

    balance += price;

    //update fraction

    fraction = double(balance)*100.0/limit;

    //if the condition is true

    if(fraction > FRACTION_LIMIT)

    {

//print warning message when fraction is more than 50%

printf("Warning: the current balance on credit card %lld is %.2f%c of your limit.\n", number, fraction, '%');

    }

    // the charge goes through

    return true;

}

//define the function makePayment

void CreditCard::makePayment(double amount)

{

    //if amount less than or equal to 0

    if(amount <= 0)

    {

        //print error message when amount is negative

        cout << "Error: Input argument must be positive...

Blurred answer

Chapter 1 Solutions

Data structures and algorithms in C++

Knowledge Booster
Background pattern image
Computer Science
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Recommended textbooks for you
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education
What is Abstract Data Types(ADT) in Data Structures ? | with Example; Author: Simple Snippets;https://www.youtube.com/watch?v=n0e27Cpc88E;License: Standard YouTube License, CC-BY