C ++ help: циклы и переключатели

Как я могу зацикливаться на опциях 1 и 2, учитывая, что это переключатель? Новичок в программировании и трудности с его решением. Любая помощь приветствуется!

#include <iostream>
using namespace std;

int main()
{
int userOption;

cout << "Hello user, what would you like to do?" << endl;
cout << "Option 1: Display a message" << endl;
cout << "Option 2: Perform a calculation" << endl;
cout << "Option 3: Exit program" << endl;
cin >> userOption;

switch (userOption)
{
char op;
int num1, num2;

case 1:
cout << "Welcome user!" << endl;
break;
case 2:
cout << "Enter + for addition, - for subtraction, * for multiplication or / for division: ";
cin >> op;
cout << "Enter two numbers: ";
cin >> num1 >> num2;
if (op == '+')
cout << num1+num2 << endl;
else if (op == '-')
cout << num1-num2 << endl;
else if (op == '*')
cout << num1*num2 << endl;
else if (op == '/')
cout << num1/num2 << endl;
break;
case 3:
cout << "Goodbye!" << endl;
return 0;
break;
default:
cout << "Please enter valid option!" << endl;

}
return 0;
}

1

Решение

В простоте вы можете использовать что-то вроде этого:

unsigned int selection = 25;
// Print menu and input selection
while (selection != 3)
{
// Do stuff
// Print menu and input selection
}
0

Другие решения

использование while петля для покрытия cin а также switch случаев. Вы можете использовать что-то вроде ниже с использованием одной дополнительной переменной bContinue что решит, как долго продолжать цикл:

int main()
{
int userOption;

cout << "Hello user, what would you like to do?" << endl;
cout << "Option 1: Display a message" << endl;
cout << "Option 2: Perform a calculation" << endl;
cout << "Option 3: Exit program" << endl;
bool bContinue = true;
while(bContinue)
{
cin >> userOption;

switch (userOption)
{
char op;
int num1, num2;

case 1:
cout << "Welcome user!" << endl;
break;
case 2:
cout << "Enter + for addition, - for subtraction, * for multiplication or / for division: ";
cin >> op;
cout << "Enter two numbers: ";
cin >> num1 >> num2;
if (op == '+')
cout << num1+num2 << endl;
else if (op == '-')
cout << num1-num2 << endl;
else if (op == '*')
cout << num1*num2 << endl;
else if (op == '/')
cout << num1/num2 << endl;
break;
case 3:
cout << "Goodbye!" << endl;
bContinue = false;
break;
default:
cout << "Please enter valid option!" << endl;
}
}
return 0;
}
0

Использовать while цикл с созданием новой переменной, но переформатировать часть кода, чтобы пользовательские параметры отображались, когда цикл начинается заново

cout << "Hello user, what would you like to do?" << endl;

bool bContinue = true;
while(bContinue)
{
cout << "Option 1: Display a message" << endl;
cout << "Option 2: Perform a calculation" << endl;
cout << "Option 3: Exit program" << endl;

cin >> userOption;

switch (userOption)
{
char op;
int num1, num2;

case 1:
cout << "Welcome user!" << endl;
break;
case 2:
cout << "Enter + for addition, - for subtraction, * for multiplication or / for division: ";
cin >> op;
cout << "Enter two numbers: ";
cin >> num1 >> num2;
if (op == '+')
cout << num1+num2 << endl;
else if (op == '-')
cout << num1-num2 << endl;
else if (op == '*')
cout << num1*num2 << endl;
else if (op == '/')
cout << num1/num2 << endl;
break;
case 3:
cout << "Goodbye!" << endl;
bContinue = false;
break;
default:
cout << "Please enter valid option!" << endl;
}
}
return 0;

Это сделает программу лучше для пользователя

0

Используйте цикл do-while, который остановится, когда userOption будет равен 3, таким образом, он будет продолжать цикл пока userOption отличается от 3, в коде userOption != 3,

Пример кода:

#include <iostream>
using namespace std;

int main()
{
int userOption;

cout << "Hello user, what would you like to do?" << endl;
do {
cout << "Option 1: Display a message" << endl;
cout << "Option 2: Perform a calculation" << endl;
cout << "Option 3: Exit program" << endl;
cin >> userOption;

switch (userOption)
{
char op;
int num1, num2;

case 1:
cout << "Welcome user!" << endl;
break;
case 2:
cout << "Enter + for addition, - for subtraction, * for multiplication or / for division: ";
cin >> op;
cout << "Enter two numbers: ";
cin >> num1 >> num2;
if (op == '+')
cout << num1+num2 << endl;
else if (op == '-')
cout << num1-num2 << endl;
else if (op == '*')
cout << num1*num2 << endl;
else if (op == '/')
cout << num1/num2 << endl;
break;
case 3:
cout << "Goodbye!" << endl;
break;
default:
cout << "Please enter valid option!" << endl;

}
} while(userOption != 3);
return 0;
}

Выход:

Hello user, what would you like to do?
Option 1: Display a message
Option 2: Perform a calculation
Option 3: Exit program
2
Enter + for addition, - for subtraction, * for multiplication or / for division:
+
Enter two numbers:
1
1
2
Option 1: Display a message
Option 2: Perform a calculation
Option 3: Exit program
3
Goodbye!
0