I cant round up minutes and switch them to hours?...for example if a car was parked for 241 minutes(input has to be in minutes) and rate was \$2/hour and first 120 minutes were free i would need to charge for 5h and i dont know how to round up right so i could charge for 5h. please helpp.

so far

``````#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
//local constants
const char CAR   = 'C';
const char TRUCK = 'T';

//local variables
char type;                             //Car or truck
int num;                                   //Minutes parked
float total;                                 //Total

/**************************start main program*********************/

//Input whether its car or truck
cout << "\n\n";
cout << setw(45) << "-------------------------------"        << endl;
cout << setw(45) << "Cost of Parking on OnCenter lot"        << endl;
cout << setw(45) << "-------------------------------"        << endl;
cout << setw(45) << "Vehicle Type (T for Truck C for Car):   " << endl;
cin  >> type;

if (type == 'C')
{
cout << setw(45) << " Minutes Parked:   ";
cin  >> num;
}
if ( num <= 120 )
cout << setw(45) << " No Fee ";

else if ( num > 120 )
``````

``````int hours(minutes/60);
if( (minutes%60) > 0 ) ++hours;``````

Divide minutes by 60 for the number of hours, the conversion to the "int" type will floor the value (drop any decimal amount)
The % (modulus) operator returns a remainder of division. If your number of minutes is not …

@Unimportant : hours(minutes/60) would act like a ground function and give 4 hours for 241 minutes and not five.(you need to increase minutes by 60 or add 1 to the hours value in order to make it act like a ceiling function i,e (241+60)/60 = 5 and (241/60)+1 = 5).

@csurfer, read the rest of my post.
I did that on purpose, and then used the modulus operator to add 1 to hours if minutes does not divide evenly into 60.
241/60 AS INT -> 4
241%60 != 0 -> 4 becomes 5

but if number of minutes was …

## All 10 Replies

``````int hours(minutes/60);
if( (minutes%60) > 0 ) ++hours;``````

Divide minutes by 60 for the number of hours, the conversion to the "int" type will floor the value (drop any decimal amount)
The % (modulus) operator returns a remainder of division. If your number of minutes is not divisible by 60, increase the number of hours by 1.

i really dont know where to put those things? im a beginner.

``````if ( num <= 120 )
cout << setw(45) << " No Fee ";
else if ((num%60) > 0 ) ++hours;
{
int hours(num/60);
cout << setprecision(2) << setiosflags(ios::fixed) << setiosflags(ios
::showpoint);
cout << setw(45) << "Total:   " << total;
}
``````

??????????????????? this still doesnt work.

thank youu

@Unimportant : hours(minutes/60) would act like a ground function and give 4 hours for 241 minutes and not five.(you need to increase minutes by 60 or add 1 to the hours value in order to make it act like a ceiling function i,e (241+60)/60 = 5 and (241/60)+1 = 5).

@nickx522:You have almost got it you can work around like this:

``````//Only a psuedocode
if(min <= 120)
// print it as free parking
else
{
//Increase minutes by 60 so that when you divide it by 60 you get the effect of ceiling function and not of a ground function
min+=60;
int hours(min/60);
//Now you have the hours for which you need to charge
}``````

i didnt even learn ceiling function yet?

can you just help me to code it? i only can use if and else.

ive been trying to get this to work for past 4h! and i cant figure it out.

``````if (type == 'C')
{
cout << setw(45) << " Minutes Parked:   ";
cin  >> num;
}
if ( num <= 120 )
cout << setw(45) << " Free Parking ";
else
{
num+=60;
num = num-120;
total = (num/60)* 1.75;
cout << "Total: " << total;
}
``````

this seem to work. is it correct?

@csurfer, read the rest of my post.
I did that on purpose, and then used the modulus operator to add 1 to hours if minutes does not divide evenly into 60.
241/60 AS INT -> 4
241%60 != 0 -> 4 becomes 5

but if number of minutes was 240:
240/60 is still 4
240%60 == 0 -> 4 stays 4

if the number was 239
239/60 is 3 as int
239%60 != 0 -> 3 becomes 4

Also, please use code tags to preserve tabs

``````if (type == 'C') {
cout <<"\nMinutes Parked: \n";
cin >> num;
}
if ( num <= 120 ) {
cout << "Free Parking\n";
} else {
total = (num-120)/60; // don't know what the 1.75 was about
if( num%60!=0 ) ++total;
cout << "Total: " << total << "\n";
}``````

Edit: You can probably even drop the != 0, and use the line:

``if(num%60)++total;``

Due to the fact that 0 evaluates to false, and any other value evaluates to true, but this might be less clear readability wise.

thank you soo much everyone!!

this works!!

``````   //Input whether its car or truck
cout << "\n\n";
cout << setw(50) << "---------------------"        << endl;
cout << setw(50) << "OnCenter Parking Cost"        << endl;
cout << setw(50) << "---------------------"        << endl;
cout << "\n";
cout << setw(58) << "Vehicle Type (T for Truck C for Car):  ";
cin  >> type;
cout << "\n";
if (type == 'c')
{
cout << setw(57) << " Minutes Parked                      : ";
cin >> num;
}
//Clear the screen
system("cls");

if ( num <= 120 )
cout << setw(50) <<  "Free Parking" << endl;
else
total_hours = (num-120)/60;
if ( num%60!=0 ) ++total_hours;
{
total_min   = total_hours + 2;
total = total_hours * CAR_FEE;
cout << setw(47) << " RECEIPT ";
cout << setw(80) << "---------";
cout << "\n\n";
cout << setw(50) << "Total Hours Parked :  " << total_min;
cout << "\n\n";
cout << setw(50) << "Cost for Parking   : \$" << total;
cout << "\n\n";
cout << setw(50) << "Vehicle Type       :  " << "Car";
cout << "\n";
}

}   //End main program
``````

but this code is only if the user enters c for car, now i dont know where i need to insert if (type == 't') and write the code for the truck which is going to be similar. if someone could help me with that, it would be much appreciated.

can anyone help??

Why not just do exactly what you just said?
Just put if(type=='t') and then the rest of the code for that case.

yeah when i do that all the elses and couts get executed too :(

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.