My program seems to be ignoring my cents after the decimal point for total_charge. It adds the dollar amounts, but ignores or does not see the cents. Can anyone give me suggestions as to what I need to look at? I'm brand new at coding, thus the reason for all these questions. thanks!


#include <iostream>

using std::cout;
using std::cin;
using std::endl;
using std::ios;
using std::fixed;

#include <iomanip>

using std::setw;
using std::setiosflags;
using std::setprecision;

#include <cmath>

//function prototype
double calculateCharge(double);

int count;
int total_hours;
int total_charge;

int main()

    int num;
    int charge;

    int count = 1;   
    int total_hours = 0 ;
    int total_charge = 0 ;

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

        cout << "enter hours parked\n\n ";
        cin >> num ;

        charge = calculateCharge(num);

        cout<< setw(3)<< "CAR" << setw(26)<< "HOURS" << setw(27)<< "CHARGE\n";
        cout<< count << setw(25)<< num << setw(27)<< fixed << setprecision( 2 ) <<setw(24)<< "$"<< calculateCharge (num) << endl;
        total_hours += num;
        total_charge += charge;
        cout<< "\n\n" <<setw(23)<< "TOTAL = " <<total_hours <<setw(24)<< "$"<< setw(2)<< total_charge << endl;

        return 0;
}//end main

double calculateCharge( double x)

double charge;       

    if (x <= 3)
          charge = 2;
    else if (x >19)
           charge = 10;

    else if (x > 3)
            charge = 2 + (x - 3) * (.5);

return charge;


int charge;
int num

double calculateCharge(double);

charge = calculateCharge(num);

What you are doing here is trying to convert a double to an int. That's probably why you are loosing everything behind the decimal point (int's do not support decimal points).
Just declare everything as 'double' and voila!

1 other thing:

int count;
int total_hours;
int total_charge;

You declare these variables twice, once local and once global. Using global vars is never really a good idea, so you can just remove them, your program will run without them. (the globals are just above int main())

Edited 6 Years Ago by Nick Evan: n/a

Ah, that makes sense, I guess I'll learn as I play around with it more. Thanks for your help, it's working now using double.


This question has already been answered. Start a new discussion instead.