#c #loops #if-statement
#c #циклы #if-оператор
Вопрос:
Я пытаюсь выяснить, вышел ли введенный пользователем из диапазона 1-10, чтобы переформулировать исходный вопрос
#include <iostream>
int main() {
int mood;
std::cout << "on a scale of 1-10 how are you? 1=worst 10=best ";
std::cin >> mood;
if ((mood<1)||(mood>10))
{
std::cout << "InVaID eNtry (UR fEElinGS ArE StiLL valID)";
}
else
{std::cout << "I am feeling like a(n) " << mood;
}
return 0;
}
Ответ №1:
Вы можете поместить его в while(true)
цикл и выйти из цикла, как только получите действительный ввод:
#include <iostream>
int main() {
int mood;
while (true) {
std::cout << "on a scale of 1-10 how are you? 1=worst 10=best ";
std::cin >> mood;
if ((mood < 1) || (mood > 10)) {
std::cout << "InVaID eNtry (UR fEElinGS ArE StiLL valID)n";
}
else {
std::cout << "I am feeling like a(n) " << mood << "n";
break;
}
}
return 0;
}
Ответ №2:
Вы можете использовать continue
для перезапуска цикла при недопустимом вводе
#include <iostream>
int main() {
int mood = -1;
while (true)
{
std::cout << "on a scale of 1-10 how are you? 1=worst 10=best ";
std::cin >> mood;
if ((mood<1)||(mood>10))
{
std::cout << "InVaID eNtry (UR fEElinGS ArE StiLL valID)";
continue; // restart loop
}
std::cout << "I am feeling like a(n) " << mood;
return 0;
}
}
Ответ №3:
You should ideally use a loop to achieve this but if you really want to do it using if-else use goto https://www.programiz.com/cpp-programming/goto
implementation using goto:
#include <iostream>
int main() {
int mood;
jump:
std::cout << "on a scale of 1-10 how are you? 1=worst 10=best ";
std::cin >> mood;
if ((mood<1)||(mood>10)){
std::cout << "InVaID eNtry (UR fEElinGS ArE StiLL valID)";
goto jump;
}else {
std::cout << "I am feeling like a(n) " << mood;
}
return 0;
}
Implementation using loop
#include <iostream>
int main() {
int mood;
do{
std::cout << "on a scale of 1-10 how are you? 1=worst 10=best ";
std::cin >> mood;
if ((mood<1)||(mood>10)){
std::cout << "InVaID eNtry (UR fEElinGS ArE StiLL valID)";
}else {
std::cout << "I am feeling like a(n) " << mood;
}
while((mood<1)||(mood>10))
return 0;
}
Ответ №4:
вы можете использовать рекурсивный метод без изменения вашего кода, вот пример для него
#include <iostream>
int main() {
int mood;
std::cout << "non a scale of 1-10 how are you? 1=worst 10=best ";
std::cin >> mood;
if ((mood<1)||(mood>10))
{
std::cout << "InVaID eNtry (UR fEElinGS ArE StiLL valID)";
main(); // here is recursive method
}
else
{
std::cout << "I am feeling like a(n) " << mood;
}
return 0;
}
рекурсивный метод вызывал сам function, поэтому может запускать вашу функцию с begin снова и снова, не используя цикл или что-то еще.
Ответ №5:
вы можете использовать while (true)
и return 0
:
#include <iosream>
int mood;
int main() {
while (true) {
std::cout << "on a scale of 1-10 how are you? 1=worst 10=best ";
cin >> mood;
if (mood <= 10 amp;amp; mood >= 1) {
std::cout << "I am feeling like a(n) " << mood;
return 0;
}
std::cout << "InVaID eNtry (UR fEElinGS ArE StiLL valID)" << endl;
}
}