/* Developed by : Dhruvkumar Rangunwala Email : instrukahero@yahoo.com */ #include #include #include using namespace std; bool CheckIfNumber(string , int, int&); const int asciiStartForDigit(48); int main() { double celcius, fahrenheit; string choice, numberEntered; int numberEnteredVerified, multiplesOf10 = 1, choiceInNumber; do { system("cls"); cout << "This program converts C -> F and F -> C temperature unit" << endl; cout << "Enter 1 for C -> F" << endl; cout << "Enter 2 for F -> C" << endl; cout << "Enter x or X to exit" << endl; cin >> choice; if ((choice.at(0) == 'x' || choice.at(0) == 'X') && choice.length() == 1) { break; } numberEnteredVerified = 0; if(CheckIfNumber(choice, multiplesOf10, numberEnteredVerified)) { cout << "Choice entered is :" << numberEnteredVerified << endl; switch(numberEnteredVerified) { case 1: cout << "Enter temperature to convert from C to F:"; break; case 2: cout << "Enter temperature to convert from F to C:"; break; default: cout << "You did not enter choice as 1 or 2\n"; system("pause"); continue; } cin >> numberEntered; } else { cout << "\nYou did not enter a number for choice\n\n\n"; system("pause"); continue; } choiceInNumber = numberEnteredVerified; numberEnteredVerified = 0; if(CheckIfNumber(numberEntered, multiplesOf10, numberEnteredVerified)) { cout << "Number entered is :" << numberEnteredVerified << endl; switch(choiceInNumber) { case 1: celcius = numberEnteredVerified; fahrenheit = (9.0/5) * celcius + 32; cout << "Celcius " << celcius << " when converted to Fahrenheit is " << fahrenheit << endl; break; case 2: fahrenheit = numberEnteredVerified; celcius = (fahrenheit - 32) * (5.0/9); cout << "Fahrenheit " << fahrenheit << " when converted to Celcius is " << celcius << endl; break; } system("pause"); } else { cout << "\nYou did not enter a number for conversion\n\n\n"; system("pause"); continue; } }while (true); cout << "\n\n\nExiting the program\n\n\n"; } bool CheckIfNumber(string numberEntered, int multiplesOf10, int& numberEnteredVerified) { char numberEnteredToChar[10]; size_t i; strcpy(numberEnteredToChar, numberEntered.c_str()); for(i = 0; i < strlen(numberEnteredToChar); i++) { if(!(isdigit(numberEnteredToChar[i]))) { return false; } else { numberEnteredVerified = (numberEnteredVerified * multiplesOf10) + ((int) numberEnteredToChar[i] - asciiStartForDigit); multiplesOf10 *= 10; } } return true; }