I'm writing a program to calculate a fee based on the time that a car is parked in a theoretical garage. But my time function doesn't seem to be giving me the correct number of minutes... I would like to use the difftime function but I'm not sure exactly how to input my integers into the correct syntax in order to utilize said function.
Here's what I have so far:
Code://Created by John Pearce // //Version 1.54 #include <iostream> #include <string> #include <iomanip> #include <cmath> #include <cstring> using namespace std; int feeTime = 0; float fee = 0; int enteringMins = 0, exitingMins = 0; int enterY, enterM, enterD, enterH, enterMi, exitY, exitM, exitD, exitH, exitMi; string entering, exiting; void convertStringToInt(); void calculateParkingHours(); float calculateFee(int); int main () { cout << "Welcome to John's Parking Garage fee calculator." << endl; cout << "fees are as follows: $2.00 minimum up to three hours." << '\n' << "An additional $0.50 per hour." << '\n' << "$8.00 Flat fee for every 24 hours." << endl; cout << setw(70) << setfill('*') << '\n' << endl; cout << "Please enter the date and time the car is entering the parking garage" << '\n' << "in the following format: MM/DD/YY hh:mm" << endl; getline(cin, entering); cout << '\n' << "Please enter the date and time the car is exiting the parking garage" << '\n' << "in the following format: MM/DD/YY hh:mm" << endl; getline (cin, exiting); convertStringToInt(); calculateParkingHours (); calculateFee(feeTime); cout << '\n' << "Number of min parked: " << feeTime << ". Fee: $" << setprecision(2) << fixed << fee << endl; return 0; } void convertStringToInt() { enterY = atoi ( entering.substr( 6, 2 ).c_str() ); enterM = atoi ( entering.substr( 0, 2 ).c_str() ); enterD = atoi ( entering.substr( 3, 2 ).c_str() ); enterH = atoi ( entering.substr( 9, 2 ).c_str() ); enterMi = atoi ( entering.substr( 12, 2 ).c_str() ); exitY = atoi ( exiting.substr( 6, 2 ).c_str() ); exitM = atoi ( exiting.substr( 0, 2 ).c_str() ); exitD = atoi ( exiting.substr( 3, 2 ).c_str() ); exitH = atoi ( exiting.substr( 9, 2 ).c_str() ); exitMi = atoi ( exiting.substr( 12, 2 ).c_str() ); } void calculateParkingHours () { enteringMins += ( enterY * 365 * 29 * 60 ); enteringMins += ( enterM * 12 * 29 * 60 ); enteringMins += ( enterD * 29 * 60 ); enteringMins += ( enterH * 60 ); enteringMins += ( enterMi ); exitingMins += ( exitY * 365 * 29 * 60 ); exitingMins += ( exitM * 12 * 29 * 60 ); exitingMins += ( exitD * 29 * 60 ); exitingMins += ( exitH * 60 ); exitingMins += ( exitMi ); feeTime = ((enteringMins - exitingMins) * -1); } float calculateFee(int feeTime) { if (feeTime >= 1440) { fee = 8.00; if (feeTime >= 2880) { fee += ((feeTime - 1440) / 1440) * 8.00; if ((feeTime - 1440) % 1440) fee += 8.00; } } else if (feeTime >= 180) { fee = 2.00; if (feeTime > 180) { fee += ((feeTime - 180) / 60) * 0.5; if ((feeTime - 180) % 60) fee += .50; } if (fee > 10) fee = 10; } else if (feeTime < 180) { fee = 2.00; } return fee; }


Reply With Quote

Bookmarks