Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Can you tell me whats wrong with my program. When I run the program it gives inv

ID: 3647682 • Letter: C

Question

Can you tell me whats wrong with my program. When I run the program it gives invalid integer entry before a number has even been entered. Please Help!!!


#include <iostream>
#include <string>
#include <stdlib.h>
#include <iomanip>
using namespace std;

// functions prototype
void displayMenu();
char getMenuSelection();
void getStartEndAndIncrement(int&, int&, int&);
double CtoF(double);
double FtoC(double);
void displayTable(char, int, int, int);

// display the main menu
void displayMenu()
{
cout << "Welcome to the temperatures convertor program" << endl;
cout << "Please select one of the following options: " << endl;
cout << "(F/f) From Fahrenheit to Celsius" << endl;
cout << "(C/c) From Celsius to Fahrenheit" << endl;
cout << "(Q/q) Exit" << endl;
}

// get the menu selection from the user
// return the option
// f...... F to C
// c...... C to F
// q...... Quit
char getMenuSelection()
{
char selection = '';

cout << "Please select an option: ";
cin >> selection;

while (tolower(selection) != 'f' && tolower(selection) != 'c' && tolower(selection) != 'q')
{
cout << "-- Invalid selection: try again --" << endl;
cout << endl;

//re-prompt the menu
displayMenu();
cout << "Please select an option: ";
cin >> selection;
// clear the ' ' after the user hits enter
cin.clear();
}
return selection;
}

// gets the start, end and increment values
// NOTE: since we are not allowed to use global variables, I guess passing by reference instead here
void getStartEndAndIncrement(int& start, int& end, int& increment)
{
cout << "Enter 3 integers: starting temperature, ending temperature, and an increment" << endl;
string tmpStart = "", tmpEnd = "", tmpIncre = "";

// check if the number user enters is a digit
cout << "starting temperature: ";
cin >> tmpStart;
cin.clear();
while (atoi(tmpStart.c_str()) == 0)
{
cout << "-- Invalid starting temperature -- " << endl;
cout << endl;
cout << "reenter again: ";
cin >> tmpStart;
cin.clear();
}

cout << "ending temperature: ";
cin >> tmpEnd;
cin.clear();
while (atoi(tmpEnd.c_str()) == 0)
{
cout << "-- Invalid ending temperature -- " << endl;
cout << endl;
cout << "reenter again: ";
cin >> tmpEnd;
cin.clear();
}

cout << "increment: ";
cin >> tmpIncre;
cin.clear();
while (atoi(tmpIncre.c_str()) == 0)
{
cout << "-- Invalid increment value -- " << endl;
cout << endl;
cout << "reenter again: ";
cin >> tmpIncre;
cin.clear();
}

start = atoi(tmpStart.c_str());
end = atoi(tmpEnd.c_str());
increment = atoi(tmpIncre.c_str());
}

// converts a celsius temperature to Fahrenheit
double CtoF(double celsius)
{
return celsius*9/5+32;
}

// converts a Fahrenheit temperature to celsius
double FtoC(double fahrenheit)
{
return fahrenheit*5/9-32;
}

// displays a C to F or F to C table given start, end and increment values, and the
// conversion character the user selected
void displayTable(char option, int startTemp, int endTemp, int increment)
{
cout << "------------------------------" << endl;
cout << setiosflags(ios::right);
cout << setiosflags(ios::fixed);

// convert from C to F
if (option == 'c')
{
cout << setw(6) << "C" << (char)248 << setw(8) << "F" << (char)248 << endl;
while (endTemp > startTemp)
{
cout << setw(8) << startTemp << setw(8) << setprecision(1) << CtoF(startTemp) << endl;
startTemp += increment;
}
// output the endTemp
if (startTemp != endTemp)
cout << setw(8) << endTemp << setw(8) << setprecision(1) << CtoF(endTemp) << endl;
}
else // convert from F to C
{
cout << setw(6) << "F" << (char)248 << setw(8) << "C" << (char)248 << endl;
while (endTemp > startTemp)
{
cout << setw(8) << startTemp << setw(8) << setprecision(1) << FtoC(startTemp) << endl;
startTemp += increment;
}
// output the endTemp
if (startTemp != endTemp)
cout << setw(8) << endTemp << setw(8) << setprecision(1) << FtoC(endTemp) << endl;
}
}

int main()
{
char usrSelection = '';
int startTemp = 0;
int endTemp = 0;
int increment = 0;

displayMenu();
usrSelection = getMenuSelection();

// as long as the user doesn't quit
while (usrSelection != 'q')
{
getStartEndAndIncrement(startTemp, endTemp, increment);
displayTable(usrSelection, startTemp, endTemp, increment);
cout << endl;
displayMenu();
usrSelection = getMenuSelection();
}
return 0;
}







Explanation / Answer

please rate - thanks

there is nothing wrong, other than some formatting to fix with your program

as you can see, it works fine

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote