проблема с программными циклами и операторами if

Я пишу программу, которая сообщает пользователю, когда они вводят отрицательное или положительное и четное или нечетное число
Затем программа задает вопрос: «Хотите ли вы ввести другой номер? y (es) или n (o)
Мне нужно учесть, что пользователь вводит что-то еще, кроме ‘y’ и ‘n’
и мне нужно учитывать, если пользователь не вводит целое число. И последнее, если пользователь выбирает «да», программе нужно будет пройти через циклический процесс определения, вводят ли они целое число и его (положительное или отрицательное и нечетное или четное)

int value;
char choice;

cout << "Please enter a number" << endl;
cin >> value;
while (!(cin >> value)) {
cin.clear();
cin.ignore(999, '\n');
cout << "Invalid data type! Please enter 'value' again" << endl;
}
if (value > 0 && value % 2 == 0) {

cout << value << " is even" << endl;
cout << value << " is positive" << endl;
}

else if (value < 0 && value % 2 != 0) {
cout << value << " is odd" << endl;
cout << value << " is negative" << endl;
}

else if (value > 0 && value % 2 != 0) {
cout << value << " is odd" << endl;
cout << value << " is postive" << endl;
}

else if (value < 0 && value % 2 == 0) {
cout << value << " is even" << endl;
cout << value << " is negative" << endl;
}
cout << "Would you like to try another number? Say y(es) or n(o)" << endl;
cin >> choice;

while (choice != 'y' &&choice != 'n') {
cin.clear();
cin.ignore(999, '\n');
cout << "Invalid response! Please enter 'choice' again" << endl;
}

do {
if (choice == 'y') {
cout << "Please enter a number" << endl;
cin >> value;
if (!(cin >> value)) {
cin.clear();
cin.ignore(999, '\n');
cout << "Invalid data type! Please enter 'value' again" << endl;

if (value > 0 && value % 2 == 0) {

cout << value << " is even" << endl;
cout << value << " is positive" << endl;
}

else if (value < 0 && value % 2 != 0) {
cout << value << " is odd" << endl;
cout << value << " is negative" << endl;
}

else if (value > 0 && value % 2 != 0) {
cout << value << " is odd" << endl;
cout << value << " is postive" << endl;
}

else if (value < 0 && value % 2 == 0) {
cout << value << " is even" << endl;
cout << value << " is negative" << endl;
}
cout << "Would you like to try another number? Say y(es) or n(o)" << endl;
cin >> choice;
}
}
} while (choice == 'n');
cout << "Thank you for using my program. Goodbye!" << endl;
return 0;

}

0

Решение

Для проверки всех ваших условий потребуются вложенные циклы do-while.
Здесь я использую cin.fail(), cin.fail() определяет, соответствует ли введенное значение значению, определенному в переменной.

int value;
char choice;
do{
cout << "Please enter a number" << endl;
cin >> value;
if(cin.fail()) // check if input is int
{
cout<<"Not an int";
choice = 'y';
}
else
{
if (value > 0 && value % 2 == 0)
{

cout << value << " is even" << endl;
cout << value << " is positive" << endl;
}

else if (value < 0 && value % 2 != 0)
{
cout << value << " is odd" << endl;
cout << value << " is negative" << endl;
}

else if (value > 0 && value % 2 != 0)
{
cout << value << " is odd" << endl;
cout << value << " is postive" << endl;
}

else if (value < 0 && value % 2 == 0)
{
cout << value << " is even" << endl;
cout << value << " is negative" << endl;
}
do{
cout << "Would you like to try another number? Say y(es) or n(o)" << endl;
cin >> choice;
}while(choice != 'y' || choice != 'n');
}
}while (choice == 'n');

Также вы должны прочитать это: Проверка входного значения является целым числом

0

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

Других решений пока нет …

По вопросам рекламы [email protected]