May 26, 2013 at 7:36pm UTC
Why
"Write your question here."
What??
Last edited on May 26, 2013 at 7:36pm UTC
May 26, 2013 at 7:58pm UTC
now it works!!
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{
int firstOperand;
int secondOperand;
char choice = 'y';/////
char TryAgain = 'NULL';/////
bool keepgoing = true;
while ((choice == 'y') || (choice == 'Y')) ///<----- I changed your code here
{
cout << " MENU\n\n";
cout << "=========================\n";
cout << "+) Add\n";
cout << "-) Subtract\n";
cout << "*) Multiply\n";
cout << "/) Divide\n";
cout << "X) Exit\n";
cout << "=========================\n";
cout << "Enter your choice: ";
cin >> choice;
if(choice !='+' && choice !='-' && choice !='*' && choice != '/' && choice!='X' && choice!='x')
{
cout <<"Invalid Choice.\n";
cout << "\n";
cout << "Valid choices are +, -. *, /, or x.\n";
cout << "Please try again. \n";
}
else if (keepgoing)
{
if (choice =='+' || choice == '-' || choice == '*' || choice == '/')
{
cout << "Enter the first operand: ";
cin >> firstOperand;
cout << "Enter the second operand: ";
cin >>secondOperand;
switch (choice)
{
case '+':
//case '+':
cout << firstOperand << " + " << secondOperand << " is " << firstOperand + secondOperand<<endl;
break;
case '-':
//case '-':
cout << firstOperand << " - " << secondOperand << " is " << firstOperand - secondOperand<<endl;
break;
case '*':
//case '*':
cout << firstOperand << " * " << secondOperand << " is" << firstOperand * secondOperand<<endl;
break;
case '/':
if (secondOperand == 0)
{
cout << "Division by zero is not possible"<<endl;
cout << "Would you like to try again (y/n): ";
cin >> TryAgain;
char tolower(TryAgain);
if(TryAgain == 'y')
{
cout << "Re-Enter the second operand: ";
cin >>secondOperand;
cout << firstOperand << "/ " << secondOperand << " is" << firstOperand / secondOperand<<endl;
}
}
else
//case '/':
cout << firstOperand << "/ " << secondOperand << " is" << firstOperand / secondOperand<<endl;
break;
}
}
}
cout<<"would you like to calculate once more? ";/// <------ here
cin>>choice; //// <---here
}
cout << "You have chose to Exit. \n"; //// <-- here
return 0;
}
Last edited on May 26, 2013 at 7:58pm UTC
May 26, 2013 at 8:00pm UTC
Please dont spam you can serch online
May 26, 2013 at 8:44pm UTC
Edward,
Thanks. However in your code, does the whole menu repeats?
I changed my code to get it to work and now the only thing that does not work is the program does not exit once the user inputs "no" to try again. Would you be able to keep my format as I want to use 'do' loop in the beginning.
It says "exiting" but the menu comes back up instead of exiting like it does when an user inputs "X" for exit.
Thanks for the help!
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{
int firstOperand;
int secondOperand;
char choice;
char TryAgain;
bool keepgoing = true;
// Display the menu choices
do {
cout << " MENU\n\n";
cout << "=========================\n";
cout << "+) Add\n";
cout << "-) Subtract\n";
cout << "*) Multiply\n";
cout << "/) Divide\n";
cout << "X) Exit\n";
cout << "=========================\n";
cout << "Enter your choice: ";
cin >> choice;
if(choice !='+' && choice !='-' && choice !='*' && choice != '/' && choice!='X' && choice!='x')
{
cout <<"Invalid Choice.\n";
cout << "\n";
cout << "Valid choices are +, -. *, /, or x.\n";
cout << "Please try again. \n";
keepgoing = true;
}
else if (keepgoing)
{
if (choice =='+' || choice == '-' || choice == '*' || choice == '/')
{
cout << "Enter the first operand: ";
cin >> firstOperand;
cout << "Enter the second operand: ";
cin >>secondOperand;
switch (choice)
{
case '+':
//case '+':
cout << firstOperand << " + " << secondOperand << " is " << firstOperand + secondOperand<<endl;
break;
case '-':
//case '-':
cout << firstOperand << " - " << secondOperand << " is " << firstOperand - secondOperand<<endl;
break;
case '*':
//case '*':
cout << firstOperand << " * " << secondOperand << " is" << firstOperand * secondOperand<<endl;
break;
case '/':
if (secondOperand >0)
{
cout << firstOperand << "/ " << secondOperand << " is" << firstOperand / secondOperand<<endl;
}
else if (secondOperand == 0)
{
cout << "Division by zero is not possible"<<endl;
cout << "Would you like to try again? (y/n): ";
cin >> TryAgain;
tolower (TryAgain);
}
if (secondOperand == 0 && TryAgain == 'y')
{
cout << "Re-Enter second operand: ";
cin >> secondOperand;
cout << firstOperand << "/ " << secondOperand << " is" << firstOperand / secondOperand<<endl;
}
if (TryAgain == 'n')
//case '/':
cout << "exiting"<<endl;
//break;
//case 'X' || 'x':
////case 'x':
//cout << "You have chose to Exit.\n";
//break;
//}
//cout << "grade has been validated so we can move on ...\n";
}
}
}
}while (choice != 'X' && choice !='x'); //while ( !(choice == 'x' || choice == 'X') )
cout << "You have chose to Exit. \n";
return 0;
}
May 26, 2013 at 8:54pm UTC
ibranext (33)
Please dont spam you can serch online
????
Ibranext, you can search online for what? I need help, how am I spamming?
May 26, 2013 at 9:13pm UTC
add this: cout<<"continue?";
cin>>choice;
before: }while (choice != 'X' && choice !='x');
as long as you're not to going to enter X ot x, it will go on ..
Last edited on May 26, 2013 at 9:14pm UTC
May 26, 2013 at 9:38pm UTC
Edward,
if I add cout << "continue?";
cin >>choice;
then what happens is that even when it comes to mult, add,sub, everytime after I am done entering the 2 operands, it will keep asking "continue"?. I dont want it to ask to continue or not.
Right now the program is behaving as I want it but im trying to find a way to exit the whole program if the user enters a 0 for secondoperand in division only and if "do you want to try again?" equals "no", i want it to just quit the whole program but the menu keeps repeating.
Is this something that is impossible to do within a switch statement?
May 26, 2013 at 9:41pm UTC
Nevermind, I get what your saying. Thanks, it worked!!!! I been on this for few hours now. THANK YOU!
May 26, 2013 at 9:44pm UTC
well it def works when it comes to division, but if i do addition or something, it crashes after it does its first calculation! d'oh!!! ah this is frustrating.
May 26, 2013 at 9:48pm UTC
it works fine for me: (copy-paste it, and see if it's still crushes)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{
int firstOperand;
int secondOperand;
char choice;
char TryAgain;
bool keepgoing = true ;
// Display the menu choices
do {
cout << " MENU\n\n" ;
cout << "=========================\n" ;
cout << "+) Add\n" ;
cout << "-) Subtract\n" ;
cout << "*) Multiply\n" ;
cout << "/) Divide\n" ;
cout << "X) Exit\n" ;
cout << "=========================\n" ;
cout << "Enter your choice: " ;
cin >> choice;
if (choice !='+' && choice !='-' && choice !='*' && choice != '/' && choice!='X' && choice!='x' )
{
cout <<"Invalid Choice.\n" ;
cout << "\n" ;
cout << "Valid choices are +, -. *, /, or x.\n" ;
cout << "Please try again. \n" ;
keepgoing = true ;
}
else if (keepgoing)
{
if (choice =='+' || choice == '-' || choice == '*' || choice == '/' )
{
cout << "Enter the first operand: " ;
cin >> firstOperand;
cout << "Enter the second operand: " ;
cin >>secondOperand;
switch (choice)
{
case '+' :
//case '+':
cout << firstOperand << " + " << secondOperand << " is " << firstOperand + secondOperand<<endl;
break ;
case '-' :
//case '-':
cout << firstOperand << " - " << secondOperand << " is " << firstOperand - secondOperand<<endl;
break ;
case '*' :
//case '*':
cout << firstOperand << " * " << secondOperand << " is" << firstOperand * secondOperand<<endl;
break ;
case '/' :
if (secondOperand >0)
{
cout << firstOperand << "/ " << secondOperand << " is" << firstOperand / secondOperand<<endl;
}
else if (secondOperand == 0)
{
cout << "Division by zero is not possible" <<endl;
cout << "Would you like to try again? (y/n): " ;
cin >> TryAgain;
tolower (TryAgain);
}
if (secondOperand == 0 && TryAgain == 'y' )
{
cout << "Re-Enter second operand: " ;
cin >> secondOperand;
cout << firstOperand << "/ " << secondOperand << " is" << firstOperand / secondOperand<<endl;
}
if (TryAgain == 'n' )
//case '/':
cout << "exiting" <<endl;
//break;
//case 'X' || 'x':
////case 'x':
//cout << "You have chose to Exit.\n";
//break;
//}
//cout << "grade has been validated so we can move on ...\n";
}
}
}
cout<<"continue?" ;
cin>>choice;
}while (choice != 'X' && choice !='x' ); //while ( !(choice == 'x' || choice == 'X') )
cout << "You have chose to Exit. \n" ;
return 0;
}
Last edited on May 26, 2013 at 9:49pm UTC
May 26, 2013 at 11:17pm UTC
The problem is that, it keeps asking to "continue" everytime you are done with a calculation.
The assignment is suppose to be where:
an user does the calculation and it keeps looping until the user presses "x" to quit.
If an user tries to divide by zero, it gives an error and asks if they want to try again.
If the user enters "y" then it only asks what the 2nd operand was and does its division and the menu loops without stopping.
If the user enters "no" they dont want to try again, the program is suppose to fully terminate (which in this case it does not).
May 27, 2013 at 6:36am UTC
ok, tell me if i understand you, only if the user tried to devide by zero, only then he can press x and exit? or the exit function can be operated at any time?
May 29, 2013 at 12:04am UTC
the issue with his program was that he had it set to (while ==n )that means it will repeat if it equals n since he typed y it closed down. This change is all he needs to make it work
1 2 3
}while (choice != 'X' && choice !='x' && TryAgain!= 'n' && TryAgain != 'N' );
cout << "You have chose to Exit. \n" ;
Last edited on May 29, 2013 at 6:31pm UTC
May 29, 2013 at 1:41am UTC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
char selection();
void getData(int &firstOperand, int &secondOperand);
void switchFunction(char &choice, int &firstOperand, int &secondOperand);
void division(int firstOperand, int secondOperand);
int main()
{
char choice;
int firstOperand = 0;
int secondOperand = 0;
choice = selection();
while (choice != 'X' )
{
getData(firstOperand, secondOperand);
switchFunction(choice, firstOperand, secondOperand);
cout << endl << endl;
choice = selection();
}
cout << "You have chose to Exit. \n" ;
cin.ignore();
return 0;
}
// Display the menu choices
char selection()
{
char choice = ' ' ;
cout << " MENU\n\n" ;
cout << "=========================\n" ;
cout << "+) Add\n" ;
cout << "-) Subtract\n" ;
cout << "*) Multiply\n" ;
cout << "/) Divide\n" ;
cout << "X) Exit\n" ;
cout << "=========================\n" ;
cout << "Enter your choice: " ;
cin >> choice;
cin.ignore();
choice = toupper(choice);
while (choice != '+' && choice != '-' && choice != '*' && choice != '/' && choice != 'X' )
{
cout << "Your selection is not valid please try again" << endl;
cout << "Enter your choice: " ;
cin >> choice;
cin.ignore();
choice = toupper(choice);
}
return choice;
}// end selection
void switchFunction(char &choice, int &firstOperand, int &secondOperand)
{
switch (choice)
{
case '+' :
//case '+':
cout << firstOperand << " + " << secondOperand << " is " << firstOperand + secondOperand<<endl;
break ;
case '-' :
//case '-':
cout << firstOperand << " - " << secondOperand << " is " << firstOperand - secondOperand<<endl;
break ;
case '*' :
//case '*':
cout << firstOperand << " * " << secondOperand << " is " << firstOperand * secondOperand<<endl;
break ;
case '/' :
division(firstOperand, secondOperand);
}//end switch
}//end switchFunction
//divides two operands
void division(int firstOperand, int secondOperand)
{
char answer = 'N' ;
while (secondOperand == 0)
{
cout << "Division by zero is not possible would you like to try again [Y/N]" <<endl;
cin >> answer;
cin.ignore();
answer = toupper(answer);
if (answer == 'Y' )
{
cout << "Enter the second operand: " ;
cin >>secondOperand;
cin.ignore();
}
}
cout << firstOperand << "/ " << secondOperand << " is " << (double )firstOperand / secondOperand<<endl;
}// end division
//gets operands from the user
void getData(int &firstOperand, int &secondOperand)
{
cout << "Enter the first operand: " ;
cin >> firstOperand;
cin.ignore();
cout << "Enter the second operand: " ;
cin >>secondOperand;
cin.ignore();
}//end getData
Last edited on May 29, 2013 at 1:51am UTC