Можно ли это добавить в этот оператор switch? - PullRequest
0 голосов
/ 01 мая 2019

Привет, я создаю программу управления гостиницей и пытаюсь сделать короткое заявление о смене статуса, но оно не работает.Я попытался добавить функцию, у которой был разрыв внутри, но я получаю сообщение об ошибке, говорящее о разрыве не в цикле или инструкции switch:

void goback()
{
    char y;
    printf("Would you like to go back?(Y/N)");
    scanf("%c",&y);
    if (y=='Y' || y=='y')
    {
        break;
    }
}
int main(){
    do
    {
        printf (" 1. Add a Room\n 2. Current rooms\n 3. Add a booking\n 4. Current bookings \n 5. Modify a booking\n 6. Print bill\n 7. Exit\n\n");
        printf ("Which section would you like to access:");
        scanf ("%d",&w);
        switch (w){
            case 1:
                clrscr();
                newroom();
                goback();
            case 2:
                clrscr();
                roomscan();
                goback();
            case 3:
                clrscr();
                addbooking();
                goback();
            case 4:
                clrscr();
                currentbooking();
                goback();
            case 5:
                clrscr();
                printf("not ready\n");
            case 6:
                clrscr();
                printf("not ready\n");
            case 7:
                clrscr();
                printf("\t\t\t\tLogging out... See you next time!");
                exit (1);
                break;
            default:
                printf("try again");
        }
    }
    while (w!=7);

}

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

конечно, вы получили ошибку из-за того, что оператор break; лишил вас функции goback(), а не case.

Как вы знаете, каждый case блок должен заканчиваться break;.

В вашем случае вы должны поместить оператор break; в конец каждого блока case, и вы можете сделать функцию goback(), возвращающую логическое значение, чтобы решить, вернетесь ли вы назад или нет, но вы должны определить, что делать, если пользователь не хочет возвращаться.

0 голосов
/ 01 мая 2019

Я не уверен, но вы можете добавить разрывы после своих операторов, если они должны выполняться отдельно, а не по порядку.здесь я вижу только, что ваше дело 7 содержит перерыв, что означает, что все дела до тех пор, пока это не будет выполнено, если это то, что вы хотите, это нормально, в противном случае, возможно, попробуйте что-то вроде этого

switch (w){
case 1:
    clrscr();
    newroom();
    goback();
    break;
case 2:
    clrscr();
    roomscan();
    goback();
    break;
case 3:
    ...

Здесь кажется, что вашФункция goback () пытается сделать этот разрыв, но она пытается вырваться из контекста, в котором она вызывается, здесь блок «если», внутри которого не может быть разрыва.Наверное, так говорит компилятор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...