c: последний цикл, если еще не работает - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь устранить ошибку в цикле в приведенном ниже коде, но я не могу понять, почему он не будет повторяться в первом «если», после в последнем «другом» («Представьте!") Я пишу 'n'.«D» работает нормально и возвращается к «иначе, если».В последнем исправленном коде я обновился с рабочим кодом.По крайней мере, это работает после того, как я нажимаю 'n' в последнем предложении "else" и возвращает меня в первое меню.

Оригинальный код

switch(alegere_opt1)
{
    case 1:
        while(decizie != 'n')
        {          
            alegereStudent(&stud);
            printf("Doriti sa introduceti un nou student? (d/n):");
            scanf(" %c",&decizie);
            if (decizie == 'n')
                {
                meniuPrincipal();
                alegereStudent(&stud);
                printf("Doriti sa introduceti un nou student? (d/n):");
                scanf(" %c",&decizie);
                }
            else if (decizie == 'd')
                {
                alegereStudent(&stud);
                printf("Doriti sa introduceti un nou student? (d/n):");
                scanf(" %c",&decizie);
                }
            else
                {
                printf("Introduceti d sau n! ");
                scanf(" %c",&decizie);
                }
        }
        break;

Исправленный код:

switch(alegere_opt1)
{
case 1:
{           
            alegereStudent(&stud);
            printf("Doriti sa introduceti un nou student? (d/n): ");
            scanf(" %c",&decizie);
                 if (decizie == 'n')
                    {
                    meniuPrincipal();
                    alegereStudent(&stud);
                    }

                   else if (decizie == 'd')
                    {
                    alegereStudent(&stud);
                    }
                    else
                     {
                    printf("Introduceti d sau n! ");
                    scanf(" %c",&decizie);
                     }
}
break;

Пересмотренный код правильный:

    switch(alegere_opt1)
{
     case 1: while (decizie != 'z')
     {          
                {          
            alegereStudent(&stud);
            printf("Doriti sa introduceti un nou student? (d/n):");
            scanf(" %c",&decizie);
            if (decizie == 'd')
                {
                alegereStudent(&stud);
                printf("Doriti sa introduceti un nou student? (d/n):");
                scanf(" %c",&decizie);
                }
            else if (decizie == 'n')
                {
                meniuPrincipal();
                }
            else
                {
                printf("Introduceti d sau n! ");
                scanf(" %c",&decizie);
                    if (decizie == 'n')
                    {
                    meniuPrincipal();
                    }
                }

                }
     }
        break;

1 Ответ

0 голосов
/ 22 октября 2018

Я не могу понять, почему это не пойдет снова в первом «if», после в последнем «else» («Introduceti d sau n!»), Я пишу «n».«D» работает нормально и возвращается к «иначе, если».

Из-за вашего while условия цикла (while(decizie != 'n')).Цикл будет выполняться до тех пор, пока вы вводите что-либо, кроме n.Это не будет в первом if, так как вы вводите n в качестве ввода.

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