این سوال کمی طولانی است اما کاربردی تر هست.
--------
پارکینگی برای سه ساعت توقف حداقل 2 دلار و برای هر ساعت اضافه بر سه ساعت 0.50 دلار از راننده می گیرد. برای هر دوره ی 24 ساعتی حداکثر مبلغ پرداخت 10 دلار است. فرض کنید هیچ خودرویی بیشتر از دو ساعت توقف نمی کند. برنامه ای به زبان ++C بنویسید که مبلغ پرداختی را برای هر یک از سه مشتری که روز قبل خوذروی خود را در این پارکینگ پارک کرده اند محاسبه کرده و مبلغ پرداختی را نمایش دهد. کاربر باید تعداد ساعات توقف را برای هر مشتری وارد نماید. برنامه باید نتایج را به صورت جدول زیر در خروجی نمایش دهد و جمع کل مبلغ های روز گذشته را نیز محاسبه کرده و نمایش دهد. در برنامه باید از تابع calculateCharges برای مبلغ پرداختی هر یک از مشتری ها استفاده کنید.
Car Hours Charge
1 1.5 2.00
2 4.0 2.50
3 24.0 10.00
Total 29.5 14.50
-----------------------------------------------------------------------------
#include<iostream>
using std::cout;
using std::endl;
using std::cin;
using std::ios;
#include<iomanip>
using std::setw;
using std::setprecision;
using std::setiosflags;
#include<cmath>
double calculateCharges( double );
int main()
{
double hour, currentCharge, totalCharges = 0.0, totalHours = 0.0;
int first = 1;
cout << "Enter the hours parked for 3 care: ";
for( int i = 1; i <= 3; i++ ) {
cin >> hour;
totalHours += hour;
if ( first ) {
cout << setw( 5 ) << "Car" << setw( 15 ) << "Hours"
<< setw( 15 ) << "Charge\n";
first = 0; // prevents this from printing again
}
totalCharges += (currentCharge = calculateCharges( hour ) );
cout << setiosflags(ios::fixed | ios::showpoint )
<< setw( 3 ) << i << setw( 17 ) << setprecision( 1 ) << hour
<< setw( 15 ) << setprecision( 2 ) << currentCharge << "\n";
}
cout << setw( 7 ) << "Total" << setw( 13 ) << setprecision( 1 )
<< totalHours << setw( 15 ) << setprecision( 2 )
<< totalCharges << endl;
return 0;
double calculateCharges( double hours )
{
double charge;
if ( hours < 3.0 )
charge = 2.0;
else if ( hours < 19.0 )
charge = 2.0 + .5 * ceil( hours - 3.0 );
else
charge = 10.0;
return charge;
}