Моя потребность:
Использование цикла 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 ++. Это может быть полезно для освежителей.
Ваша петля несовершенна
int input=1;
int i= 0;
string name;
while(input<=i)
как input
больше, чем i
начать с
Вы считать контрольный пример работает для 42, но на самом деле логика внутри вашего цикла никогда не выполняется. Это просто тот случай, когда вывод на консоль одинаков (т. Е. Его нет), но ваш код никогда не добирается до cin
проверить ввод 42
Ваш код никогда не вводится while
так как условие всегда false
,
Просто используйте,
....
while(1)
{
....
Это будет запускать ваш цикл бесконечно и прерывать каждый раз, когда встречается 42.
Ваш код даже не запускается, когда вы проходите 42, потому что input
больше, чем i
,
while(input<=i) // input = 1, i = 0, 1 > 0
То, что вы, вероятно, хотите, это бесконечный цикл:
while (true)
Ваш код имеет следующие проблемы:
—
Мое решение:
#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;
}
Прежде всего, извините за мой основной вопрос. Цикл не начат. Поскольку input
это 1 и i
равно 0. Но условие, которое я дал input<=i
, Из-за ложного условия элемент управления не входит в цикл