Expand|Select|Wrap|Line Numbers
- #include <iostream>
- #include <iomanip>
- using namespace std;
- char const METRIC = 'M'; // Input read as metric
- char const ENGLISH = 'E'; // Input read as english
- char const QUIT = 'Q'; // Input read to quit program
- char const QUIT2 = 'q'; // Input read to quit program
- float const MINDISTANCE = 16.00; // Minimum value for tripdistance
- float const MAXDISTANCE = 2800.00; // Maximum value for tripdistance
- float const MINPRICE = 0.75; // Minimum value for volume
- float const MAXPRICE = 5.00; // Maximum value for volume
- float const GASMINIMUM = 0.00; // Minimum value for gas
- float const LITPERGAL = 3.79; // Conversion factor for English <-> Metric (lit to gal)
- float const KILPERMIL = 1.61; // Conversion factor for English <-> Metric (kil to mil)
- int main()
- {
- char start; // Input to start program; metric, english, or quit
- float volume; // Input for gas volume
- float price; // Input for gas price
- float distance; // Input for total trip distance
- float volumeM; // Input stored conversion: volume from English to Metric
- float volumeE; // Input stored conversion: volume from Metric to English
- float priceM; // Input stored conversion: price from English to Metric
- float priceE; // Input stored conversion: price from Metric to English
- float tripM; // Input stored conversion: trip distance from English to Metric
- float tripE; // Input stored conversion: trip distance from Metric to English
- float milpergal; // Input stored computation for ML/Gal
- float kmperliter; // Input stored computation for KM/Liter
- float tripcost; // Input stored for total cost of trip
- cout << "The program calculates mileage and other statistics" << endl
- << "for a road trip in both Metric and English units."
- << endl << endl;
- cout << "Enter the type of measurement units" << endl << "'M' for Metric"
- << " or 'E' for English or" << endl << "'Q' or 'q' for Quit: ";
- cin >> start;
- while ( start != QUIT && start != QUIT2 )
- {
- if ( start == METRIC || start == ENGLISH )
- {
- cout << endl << "Please enter the volume of gas consumed: ";
- cin >> volume;
- while ( volume <= GASMINIMUM )
- {
- cout << "Please reenter the volume gas consumed"
- << endl << "(it must be greater than 0.00): ";
- cin >> volume;
- }
- cout << endl << "Please enter the price of gas per unit volume: ";
- cin >> price;
- while ( price <= MINPRICE || price >= MAXPRICE )
- {
- cout << "Please reenter Fuel Price (it must be higher"
- << endl << "than 0.75 and lower than 5.00) :";
- cin >> price;
- }
- cout << endl << "Please enter the trip distance: ";
- cin >> distance;
- while ( distance < MINDISTANCE || distance >= MAXDISTANCE )
- {
- cout << "Please reenter a trip distance greater than"
- << endl << "or equal to 16.00 and less than 2800.00: ";
- cin >> distance;
- }
- cout << endl << setw(10) << "MILES" << setw(10) << "KMETERS"
- << setw(10) << "$/Gal" << setw(10) << "$/Lit"
- << setw(10) << "ML/Gal" << setw(10) << "KM/Liter"
- << setw(12) << "Trip Cost" << endl;
- tripcost = price * volume;
- if ( start == METRIC )
- {
- tripE = distance / KILPERMIL;
- priceE = price * LITPERGAL;
- volumeE = volume / LITPERGAL;
- kmperliter = distance / volume;
- milpergal = tripE / volumeE;
- cout << showpoint
- << setw(10) << setprecision(3) << tripE
- << setw(10) << setprecision(3) << distance
- << setw(10) << setprecision(2) << priceE
- << setw(10) << setprecision(2) << price
- << setw(10) << setprecision(3) << milpergal
- << setw(10) << setprecision(3) << kmperliter
- << setw(12) << setprecision(2) << tripcost << endl
- << endl;
- }
- else
- {
- tripM = distance * KILPERMIL;
- priceM = price / LITPERGAL;
- volumeM = volume * LITPERGAL;
- kmperliter = tripM / volumeM;
- milpergal = distance / volume;
- cout << showpoint
- << setw(10) << setprecision(3) << distance
- << setw(10) << setprecision(3) << tripM
- << setw(10) << setprecision(2) << price
- << setw(10) << setprecision(2) << priceM
- << setw(10) << setprecision(3) << milpergal
- << setw(10) << setprecision(3) << kmperliter
- << setw(12) << setprecision(2) << tripcost << endl
- << endl;
- }
- cout << "Enter the type of measurement units" << endl
- << "'M' for Metric" << " or 'E' for English or"
- << endl << "'Q' or 'q' for Quit: ";
- cin >> start;
- }
- else if ( start == QUIT || start == QUIT2 )
- cout << endl << endl << "Thanks for using the program!";
- else while ( start != METRIC && start != ENGLISH )
- {
- cout << "Please reenter the type of measurement units"
- << endl << "'M' for Metric or 'E' for English: ";
- cin >> start;
- }
- }
- cout << endl << endl << "Thanks for using the program!";
- return 0;
- }