Тестовый пример не прошел, используя цикл while в Stack Overflow

Моя потребность:

Использование цикла while приветствует столько имен, сколько доступно на stdin. Остановитесь, когда прочитаете строку «42» как имя.

Моя кодировка:

#include<iostream>
using namespace std;
int main()
{
int input=1;
int i= 0;
string name;
while(input<=i)
{
cin>>name;
if(name=="42")
{
break;
}
else
{
cout<<"Hello "<<name<<"!";
i++;
}

}
return 0;
}

Результат:

Для входа 42 тестовый пример пройден. Для другого ввода тестовый пример не пройден. Пожалуйста, оставьте свой ответ.

Ответ через ~ 1 год:

Очень извините за этот вопрос. Это я спросил, когда у меня 0 знаний о C ++. Это может быть полезно для освежителей.

-20

Решение

Ваша петля несовершенна

int input=1;
int i= 0;
string name;
while(input<=i)

как input больше, чем i начать с

Вы считать контрольный пример работает для 42, но на самом деле логика внутри вашего цикла никогда не выполняется. Это просто тот случай, когда вывод на консоль одинаков (т. Е. Его нет), но ваш код никогда не добирается до cin проверить ввод 42

4

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

Ваш код никогда не вводится while так как условие всегда false,

Просто используйте,

....
while(1)
{
....

Это будет запускать ваш цикл бесконечно и прерывать каждый раз, когда встречается 42.

2

Ваш код даже не запускается, когда вы проходите 42, потому что input больше, чем i,

while(input<=i) // input = 1, i = 0, 1 > 0

То, что вы, вероятно, хотите, это бесконечный цикл:

while (true)
1

Ваш код имеет следующие проблемы:

  • Это не будет входить в цикл вход инициализируется до 1 и я устанавливается в 0. При проверке состояния * while (входной<= Я) * то есть., в то время как (1<= 0) что неверно, оно не выполнит приведенные ниже операторы.

Мое решение:

 #include<iostream>
using namespace std;
int main()
{
int input=0;
int i= 1;
string name;
while(input<=i)
{
cin>>name;
if(name=="42")
{
break;
}
else
{
cout<<"Hello "<<name<<"!";
i++;
}

}
return 0;
}
  • Инициализация вход с 0 и я с 1 даст вам желаемый результат.
0

Прежде всего, извините за мой основной вопрос. Цикл не начат. Поскольку input это 1 и i равно 0. Но условие, которое я дал input<=i, Из-за ложного условия элемент управления не входит в цикл

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