// File: ConversionProject.cpp
// Date: 4/27/2007
// Author: Mike Elms with modifications by Nicholas Duchon
// ND: my mods are commented with ND
#include < iostream >
using namespace std;
bool menu(); // proto
int numberOfConversions = 0;
double myCelsius (double f) {
return (f - 32) * 5.0 / 9.0;} // end myCelsius(double f)
double myFahrenheit(double c) {
return c * 9.0 / 5.0 + 32;} // end myFahrenheit(double c)
double myMile (double k) {
return k*1.61;} // end myMile (double)
double myKilometer (double m) {
return m*0.62;} // end myKilometer (double)
/*
1 kilometers is equal to 0.62 miles
1 miles is equal to 1.61 kilometers
*/
int celsiusToFahrenheit()
{
double celsius;
double fahrenheit;
cout << "Enter the temperature in celsius: ";
cin >> celsius;
fahrenheit = myFahrenheit(celsius);
numberOfConversions++;
cout << "The temperature in fahrenheit is " << fahrenheit << endl;
return 0;
}
int fahrenheitToCelsius()
{
double celsius;
double fahrenheit;
cout << "Enter the temperature in fahrenheit: ";
cin >> fahrenheit;
celsius = myCelsius(fahrenheit);
numberOfConversions++;
cout << "The temperature in celsius is " << celsius << endl;
return 0;
}
int kilometerToMile()
{
double kilometer;
double mile;
cout << "Enter the distance in kilometers: ";
cin >> kilometer;
mile= myMile(kilometer);
numberOfConversions++;
cout << "The distance in miles is " << mile << endl;
return 0;
}
int mileToKilometer()
{
double kilometer;
double mile;
cout << "Enter the distance in miles: ";
cin >> mile;
kilometer = myKilometer(mile);
numberOfConversions++;
cout << "The distance in kilometers is " << kilometer << endl;
return 0;
}
// return value:
// true = continue looping on this menu, false = stop
bool tempMenu()
{
int x;
cout << "Temperature:\n\n";
cout << "1) Celsius to Fahrenheit" << endl;
cout << "2) Fahrenheit to Celsius" << endl;
cout << "3) Menu" << endl;
cin >> x;
if (x == 1) celsiusToFahrenheit();
else if (x == 2) fahrenheitToCelsius();
else if (x == 3)
return false;
else cout << "Error" << endl;
return true;
} // end tempMenu
// return value:
// true = continue looping on this menu, false = stop
bool distMenu()
{
int x;
cout << "Distance:\n\n";
cout << "1) Kilometer to Mile" << endl;
cout << "2) Mile to Kilometer" << endl;
cout << "3) Menu" << endl;
cin >> x;
switch (x) {
case 1: kilometerToMile();
break;
case 2: mileToKilometer();
break;
case 3:
return false;
default: cout << "Error" << endl;
} // end switching on menu selection
return true; // ND: use return value looping
} // end distMenu
// return value:
// true = continue looping on this menu, false = stop
bool menu()
{
int x;
cout << "Metric Conversion:\n\n";
cout << "1) Temperature" << endl;
cout << "2) Distance" << endl;
cout << "3) Exit" << endl;
cin >> x;
switch(x) { // use return value looping
case 1:
while (tempMenu());
break;
case 2:
while (distMenu());
break;
case 3:
return false; // no need for break!
default: cout << "Error" << endl;
} // end switch
return true; // ND: USE the return value
} // end menu - main menu
int main()
{
cout << "Final" << endl;
while (menu()); // ND: use the return value this way
cout << numberOfConversions << " number of conversions." << endl;
return 0;
} // end main