Так как вы не проверяете ошибки, неудивительно, что ваш код работает некорректно.
Попробуйте это
while(1){
cout<<"enter n: ";
cin>>n;
if (!cin || n==0) break;
}
!cin
- это проверка, если cin
находится в состояние ошибки . Это может произойти (например), если последний ввод не удался, потому что введенное не может быть преобразовано в int
.