Если заявление пропускается иначе, если прямо к другому

Я пытаюсь сделать следующее утверждение:
Если возраст больше 20 и меньше 50, продолжайте.
Если возраст меньше 20 и больше 50, ошибка перезапускается.
если что-то еще, ошибка, перезагрузите.

Но, по какой-то причине, он пропускает сразу же условие else и переходит прямо к другому. Если я введу «19» для возраста, он выдаст «Ошибка». Если я введу 51 для возраста, он выдаст «Ошибка». Что происходит?

#include "stdafx.h"#include <iostream>
#include <string>
using namespace std;int plyAgeCreate() {

int plyAge = 0;

cout << "Enter an age" << endl;
cin >> plyAge;

//If age is greator than 20 and less than 50, accept.
//Else if age is less than 20 but greator than 50, decline.
//else, error. Restart.

if (plyAge >= 20 && plyAge <= 50) {
cout << "Welcome!" << endl;
}
else if (plyAge < 20 && plyAge > 50) { //Why is this being skipped?
cout << "Between 20 and 50" << endl;
return plyAgeCreate();
}
else {
cout << "Error" << endl;
return plyAgeCreate();
}}int main()
{

plyAgeCreate();

system("pause");
return 0;
}

-3

Решение

использовать или, а не и. он войдет туда, только если число будет меньше 20 и больше 50, что невозможно. если бы это было 19, это должно было бы измениться на 51, или измените это или удалите это.

else if (plyAge < 20 || plyAge > 50) { //Why is this being skipped?
1

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

Неверная логика:

еще если (plyAge < 20 && plyAge> 50) // это условие никогда не может быть истинным

должно быть

else if (plyAge < 20 || plyAge > 50)
1

Попробуй это.

#include "stdafx.h"#include <iostream>
#include <string>
using namespace std;int plyAgeCreate() {

int plyAge = 0;

cout << "Enter an age" << endl;
cin >> plyAge;

//If age is greator than 20 and less than 50, accept.
//Else if age is less than 20 but greator than 50, decline.
//else, error. Restart.

if (plyAge >= 20 && plyAge <= 50) {
// This means Age is Between 20 and 50
}
else {
//This means age is below 20 OR above 50
}
// There cannot another case. Either between 20 - 50 or not between 20 - 50
}int main()
{

plyAgeCreate();

system("pause");
return 0;
}
1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector