Cashier 1.0 is a C++ program that displays on the screen item codes with corresponding item description and price (at least 10 items). It asks the user to enter the code of the item purchased by a customer. Then, its description and price are displayed on the screen too. Also, it asks for the quantity of the particular item code entered. Consequently, it displays the total amount due. Then, it asks the user to tender the amount of cash of the customer. Finally, it displays the change and its breakdown.

Constraints:

When any one of the scenarios happens, the program should exit.
• The user enters item codes that are not available.
• The user types in quantity less than or equal to 0.
• The user inputs amount of cash less than the amount due.

Grading Criteria:

Program Correctness 80%
Ease of Use 20%

Sample Run:
Welcome to CS131xxx Mart!
Item Codes Description Price
100 Sweet ‘n Ripe Grapes 302.90
101 Crunchy Apples 52.20
… … …
109 Green Peas 25.75

Enter Code: 100
Sweet ‘n Ripe Grapes 302.90 Qty: 1


Total Due: 302.90
Cash: 1000.00
Change: 697.10


=========== CHANGE BREAKDOWN ===========
1000 0 0
500 1 500.00
200 0 0
100 1 100.00
50 1 50.00
20 2 40.00
10 0 0
5 1 5.00
1 2 2.00
0.25 0 0
0.10 1 0.10
0.05 0 0

“ Thanks for shopping!”

its in c++ . . . the breakdown is the hardest part so i was tryin to make a program of it for my hw . . . but its kinda hard . . . ok for example . . . the change that the cashier is gon to give to the customer is lets say $1250 . . . in the breakdown it will say how many 1000 , 500, 200, 100, 50, 20, 10, 5, 1, 0.25, 0.10, 0.05 are there in the change . . .

so far this is wot i have finished and im not sure if my codes are correct . . .

#include<iostream>
#include<cmath>
using namespace std;

void main()
{

    int code, qty, cash;
    double tDue, change;


    cout<<"Welcome to CS131xxx Mart!"<<endl<<endl;
    cout<<"Item Codes         Description         Price"<<endl<<endl;
    cout<<"100            Sweet 'n Ripe Grapes            302.90"<<endl;
    cout<<"101            Crunchy Apples              52.20"<<endl;
    cout<<"102            Green Peas              25.75"<<endl;
    cout<<"103            Oranges                 60.75"<<endl;
    cout<<"104            Melons                  135.40"<<endl;
    cout<<"105            Ripe Mangos             90.50"<<endl<<endl;

    cout<<"Enter Code: ";
    cin>>code;


    switch (code)
    {
    case 100: cout<<"Sweet 'n Ripe Grapes         302.90";
              cout<<"           Qty: ";
              cin>>qty;

              {
              if (qty<0)
                cout<<"Invalid Quantity Number"<<endl;
              else
                tDue=302.90*qty;
                cout<<"Total Due: "<<tDue<<endl;
              }

                cout<<"Cash: ";
                cin>>cash;

                change=cash-tDue;

                {
                if (cash<0 || cash<tDue)
                cout<<"Invalid Cash"<<endl;
                else
                cout<<"Change: "<<change<<endl<<endl;
                }


                break;

    case 101: cout<<"Crunchy Apples               52.20";
              cout<<"           Qty: ";
              cin>>qty;

              {
              if (qty<0)
                cout<<"Invalid Quantity Number"<<endl;
              else
                tDue=52.20*qty;
                cout<<"Total Due: "<<tDue<<endl;
              }

                cout<<"Cash: ";
                cin>>cash;

                change=cash-tDue;

                {
                if (cash<0 || cash<tDue)
                cout<<"Invalid Cash"<<endl;
                else
                cout<<"Change: "<<change<<endl<<endl;
                }             

              break;

    case 102: cout<<"Green Peas               25.75";
              cout<<"           Qty: ";
              cin>>qty;

              {
              if (qty<0)
                cout<<"Invalid Quantity Number"<<endl;
              else
                tDue=25.75*qty;
                cout<<"Total Due: "<<tDue<<endl;
              }

                cout<<"Cash: ";
                cin>>cash;

                change=cash-tDue;

                {
                if (cash<0 || cash<tDue)
                cout<<"Invalid Cash"<<endl;
                else
                cout<<"Change: "<<change<<endl<<endl;
                }             

                break;

    case 103: cout<<"Oranges                  60.75";
              cout<<"           Qty: ";
              cin>>qty;

              {
              if (qty<0)
                cout<<"Invalid Quantity Number"<<endl;
              else
                tDue=60.75*qty;
                cout<<"Total Due: "<<tDue<<endl;
              }

                cout<<"Cash: ";
                cin>>cash;

                change=cash-tDue;

                {
                if (cash<0 || cash<tDue)
                cout<<"Invalid Cash"<<endl;
                else
                cout<<"Change: "<<change<<endl<<endl;
                }             

                break;

    case 104: cout<<"Melons                   135.40";
              cout<<"           Qty: ";
              cin>>qty;

              {
              if (qty<0)
                cout<<"Invalid Quantity Number"<<endl;
              else
                tDue=135.40*qty;
                cout<<"Total Due: "<<tDue<<endl;
              }

                cout<<"Cash: ";
                cin>>cash;

                change=cash-tDue;

                {
                if (cash<0 || cash<tDue)
                cout<<"Invalid Cash"<<endl;
                else
                cout<<"Change: "<<change<<endl<<endl;
                }            

                break;

    case 105: cout<<"Ripe Mangos              90.50";
              cout<<"           Qty: ";
              cin>>qty;

              {
              if (qty<0)
                cout<<"Invalid Quantity Number"<<endl;
              else
                tDue=90.50*qty;
                cout<<"Total Due: "<<tDue<<endl;
              }

                cout<<"Cash: ";
                cin>>cash;

                change=cash-tDue;

                {
                if (cash<0 || cash<tDue)
                cout<<"Invalid Cash"<<endl;
                else
                cout<<"Change: "<<change<<endl<<endl;
                }

                break;

    default:  cout<<"Invalid Item Code"<<endl<<endl;

    }

cout<<"=============== CHANGE BREAKDOWN ==============="<<endl;

Edited 3 Years Ago by mike_2000_17: Fixed formatting

I'd do something like the following:

void changeDue(double amt)
{
    double denomination[12];
    double amtRemaining; 
    int numberOfDenomination = 0;
   
    denomination[0] = 1000.0;
    denomination[1] = 500.0;
    denomination[2] = 200.0;
    denomination[3] = 100.0;
    denomination[4] = 50.0;
    denomination[5] = 20.0;
    denomination[6] = 10.0;
    denomination[7] = 5.0;
    denomination[8] = 1.0;
    denomination[9] = 0.25;
    denomination[10] = 0.10;
    denomination[11] = 0.05;


    amtRemaining = amt;
    for (int i=0; i<= 11;i++)
    {
        numberOfDenomination = amtRemaining / denomination[i];

        if (numberOfDenomination > 0)
        {
            amtRemaining = amtRemaining - (numberOfDenomination*denomination[i]);
			
            cout << denomination[i] << ": " << numberOfDenomination;
            cout  << "(" << amtRemaining << ")" << endl;
       }
 }

It doesn't quite work for amounts that end in say $0.55 though. Don't have time to look at it more right now. But it should give you some ideas on how you might continue.

This version should work.

void changeDue(float amt)
{
    float denomination[12];
    float amtRemaining; 
    int numberOfDenomination = 0;
   
    //put monetary denominations into array
    denomination[0] = 1000.0;
    denomination[1] = 500.0;
    denomination[2] = 200.0;
    denomination[3] = 100.0;
    denomination[4] = 50.0;
    denomination[5] = 20.0;
    denomination[6] = 10.0;
    denomination[7] = 5.0;
    denomination[8] = 1.0;
    denomination[9] = 0.25;
    denomination[10] = 0.10;
    denomination[11] = 0.05;

    //initialize amtRemaining to amt
    amtRemaining = amt;
    for (int i=0; i<= 11;i++)
    {
         //divide amount by denomination and set it to integer value
        //this leaves us with the number of the denomination we need
        numberOfDenomination = (int)(amtRemaining / denomination[i]);

        if (numberOfDenomination > 0)
        {
            amtRemaining = amtRemaining - (numberOfDenomination*denomination[i]);
			
            cout << denomination[i] << ": " << numberOfDenomination <<endl;

       }
 }

This version should work.

void changeDue(float amt)
{
    float denomination[12];
    float amtRemaining; 
    int numberOfDenomination = 0;
   
    //put monetary denominations into array
    denomination[0] = 1000.0;
    denomination[1] = 500.0;
    denomination[2] = 200.0;
    denomination[3] = 100.0;
    denomination[4] = 50.0;
    denomination[5] = 20.0;
    denomination[6] = 10.0;
    denomination[7] = 5.0;
    denomination[8] = 1.0;
    denomination[9] = 0.25;
    denomination[10] = 0.10;
    denomination[11] = 0.05;

    //initialize amtRemaining to amt
    amtRemaining = amt;
    for (int i=0; i<= 11;i++)
    {
         //divide amount by denomination and set it to integer value
        //this leaves us with the number of the denomination we need
        numberOfDenomination = (int)(amtRemaining / denomination[i]);

        if (numberOfDenomination > 0)
        {
          amtRemaining= amtRemaining-(numberOfDenomination*denomination[i]);
			
          cout << denomination[i] << ": " << numberOfDenomination <<endl;

       }
 }
This article has been dead for over six months. Start a new discussion instead.