I coded a program its for temperature conversion its still not developed yet and I'm having a problem.
Here's the code:
/* Software Name = Temperature Converter Calculator...
Made by Manzoor Ahmed.*/
// Program that helps converting Temperature degrees.
// Formulas obtained from wikipedia.org.
#include <cstdlib>
#include <cctype>
#include <iostream>
using namespace std;
int CelFunc() ;
void CnvrtTemp()
{
char Cnvrt_Temp_Option ;
cout << "\n==================== Convert Temperature =======================" << endl ;
do
{
cout << "\n\n[C] Celsius Converter" << endl ;
cout << "[F] Fahrenheit Converter" << endl ;
cout << "[K] Kelvin Converter" << endl ;
cout << "[R] Rankine Converter" << endl ;
cout << "[M] Back to Main Menu." << endl ;
cout << "\n(Characters enclosed by the square brackets are the options.)" << endl ;
cout << "\nEnter your option: " ;
cin >> Cnvrt_Temp_Option ;
if ( Cnvrt_Temp_Option == 'C' || Cnvrt_Temp_Option == 'c' )
{
CelFunc();
}
if ( Cnvrt_Temp_Option == 'F' || Cnvrt_Temp_Option == 'f' )
{
cout << "FahrFunc()" << endl ;
}
if ( Cnvrt_Temp_Option == 'K' || Cnvrt_Temp_Option == 'k' )
{
cout << "KelFunc()" << endl;
}
if ( Cnvrt_Temp_Option == 'R' || Cnvrt_Temp_Option == 'r' )
{
cout << "RankFunc()" << endl ;
}
} while (!( Cnvrt_Temp_Option == 'M' || Cnvrt_Temp_Option == 'm' ));
}
int main()
{
char Main_Menu_Option;
// program name output
cout << "################################################################################";
cout << "# #";
cout << "# #";
cout << "# #";
cout << "# Temperature Converter Calculator #";
cout << "# #";
cout << "# #";
cout << "# #";
cout << "# #";
cout << "################################################################################\n\n";
do
{ // Main Menu
cout << "\n================================ Main Menu =====================================\n\n\n";
// Menu
cout << "[C] Convert Temperature" << endl ;
cout << "[H] Help" << endl ;
cout << "[E] Exit" << endl ;
cout << "\n(Characters enclosed by the square brackets are the options.)\n" << endl ;
cout << "\nEnter your option : ";
cin >> Main_Menu_Option ;
if (!( Main_Menu_Option == 'C' || Main_Menu_Option == 'c' || Main_Menu_Option == 'H' || Main_Menu_Option == 'h' || Main_Menu_Option == 'E' || Main_Menu_Option == 'e' ))
{
cout << "\nWrong option entered\n";
}
if ( Main_Menu_Option == 67 || Main_Menu_Option == 99) // 67 == C , 99 == c.
{
CnvrtTemp();
}
if ( Main_Menu_Option == 69 || Main_Menu_Option == 104 )
{
cout << "Help section is under construction.\n";
}
} while (!( Main_Menu_Option == 69 || Main_Menu_Option == 101 ));
system ("pause");
return 0;
}
int CelFunc()
{ char again;
cout << "\n=============================== Celsius Converter ==============================\n\n" ;
do {
cout << "Enter °C (Celsius) degree to convert :";
double cTemp2Conv;
cin >> cTemp2Conv;
if (isdigit(cTemp2Conv)) {
double cFahrenheit = (cTemp2Conv * 1.8) + 32;
double cKelvin = cTemp2Conv + 273.15;
double cRankine = (cTemp2Conv + 273.15) * 1.8;
cout << "\nAnswer: " << cTemp2Conv << " Celsius in Fahnrenheit scale = " << cFahrenheit;
cout << "\nAnswer: " << cTemp2Conv << " Celsius in Kelvin scale = " << cKelvin;
cout << "\nAnswer: " << cTemp2Conv << " Celsius in Rankine scale = " << cRankine;
cout << "\n\n";
}
else {
cout << "\nINVALID INPUT !";
cout << "\nPlease enter numerical values.\n";
}
cout << "\nDo you want to convert temperature again ?";
cout << "\nEnter Y for yes, N for no.";
cout << "\nEntering wrong option other than Y/N will result in getting back to \nConvert Temprature menu.";
cout << "\n[y]/[n]:";
cin >> again;
} while (again == 'y'|| again == 'Y');
}
Well the problem is when you go to Celsius Converter and their input a character then its starts looping infinitely. How to avoid looping ?
I used isdigit() here to check whether the input is a numerical value or its an alphabet.
I also used the cin.good() function but I'm still getting the same error.
Sorry if my code is too big but I couldn't lessen it because I'm a beginner and don't know where the real problem is.