Я пытаюсь сделать следующее утверждение:
Если возраст больше 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;
}
использовать или, а не и. он войдет туда, только если число будет меньше 20 и больше 50, что невозможно. если бы это было 19, это должно было бы измениться на 51, или измените это или удалите это.
else if (plyAge < 20 || plyAge > 50) { //Why is this being skipped?
Неверная логика:
еще если (plyAge < 20 && plyAge> 50) // это условие никогда не может быть истинным
должно быть
else if (plyAge < 20 || plyAge > 50)
Попробуй это.
#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;
}