C ++ Почему это еще, если запустить после того, как если true - PullRequest
1 голос
/ 22 января 2020
using namespace std;
int main(){
    int userinp=-1,dig1=0,dig2=0,dig3=0,dig4=0;
    while(userinp!=0) {
        cin>>userinp;
        if (userinp=0) userinp=0;
        else if(userinp<0||userinp>9999) cout<<"Wrong input";
        else if (userinp<10) { dig1++; userinp =-1;}
        else if (userinp<100) {dig2++; userinp =-1;}
        else if (userinp<1000) {dig3++; userinp =-1;}
        else {dig4++; userinp =-1;}
    }
    cout<<dig1<<endl<<dig2<<endl<<dig3<<endl<<dig4;
    return 0;
    }

Я пытаюсь выполнить упражнение из своей школьной книги, но оно застревает в бесконечном l oop, потому что оно набирает else if userinp<10, когда я набираю 0. Почему? Если я удалю части после того, как if выходит из времени.

1 Ответ

5 голосов
/ 22 января 2020

Вы поместили присваивание (=) вместо равной проверки (==) в вашу часть условия if.

Измените эту строку:

if (userinp=0) userinp=0;

на эту

if (userinp==0) userinp=0;

И тебе должно быть хорошо.

Удачи

...