Я создаю программу, которая требует от пользователя выбора марки воды, которую он хочет, и количества бутылок, которые они хотят доставить в свой дом. Программа использует цикл while, чтобы спросить пользователя, правильное ли количество бутылок, которое он хочет, и, если нет, цикл позволит повторно ввести желаемое количество.

Программа работает до момента каждый раз, когда мне нужно выбирать новую марку воды; он придерживается предыдущих сведений о бренде воды. Я не вижу проблемы с циклом while в моей программе. Вот код:

#include 
#include 

int main()
{
    int valuechange = 0;
    int correct = 0;
    int choice = 0;     
    int numofbottles;


    while (choice != 6)
    {
        printf("1. Buxton\n");
        printf("2. Evian\n");
        printf("3. Harrogate\n");
        printf("4. Power life\n");
        printf("5. Smart water\n");
        printf("6. Exit\n\n");
        printf("Enter your choice here: ");
        scanf("%d", &choice);
        /*each if statement has a while loop for if the user wants to re-enter a value of water bottles*/
        if (choice == 1)
        {
            while (correct != 1)
            {
                printf("Please choose how many bottles of Buxton you want to be delivered to your house:\n\n");
                scanf("%d", &numofbottles);

                printf("you have chosen %d bottles, is this the correct amount?\n(enter 1 for yes or 2 for no):\n\n", numofbottles);
                scanf("%d", &correct);
            }
            printf("Thank you, your order for %d Buxton bottles will be delivered to you\nwithin 3 working days.\n\n", numofbottles);
        }


        if (choice == 2)
        {
            while (correct != 1)
            {
                printf("Please choose how many Evian bottles  you want to be delivered to your house:\n\n");
                scanf("%d", &numofbottles);

                printf("you have chosen %d bottles, is this the correct amount?\n(enter 1 for yes or 2 for no):\n\n", numofbottles);
                scanf("%d", &correct);
            }
            printf("Thank you, your order for %d Evian bottles will be delivered to you\nwithin 3 working days.\n\n", numofbottles);
        }

        if (choice == 3)
        {
            while (correct != 1)
            {
                printf("Please choose how many Harrogate bottles  you want to be delivered to your house:\n");
                scanf("%d", &numofbottles);

                printf("you have chosen %d bottles, is this the correct amount?\n(enter 1 for yes or 2 for no):\n\n", numofbottles);
                scanf("%d", &correct);
            }
            printf("Thankyou, your order for %d Harrogate bottles will be deliver to you\nwithin 3 working days.\n\n", numofbottles);
        }


        if (choice == 4)
        {
            while (correct != 1)
            {
                printf("Please choose how many Powerlife bottles you want to be delivered to your house:\n\n");
                scanf("%d", &numofbottles);

                printf("you have chosen %d bottles, is this the correct amount?\n(enter 1 for yes of 2 for no):\n\n", numofbottles);
                scanf("%d", &correct);
            }
            printf("Thankyou, your order for %d Powerlife bottles will be deliver to you\nwithin 3 working days.\n\n", numofbottles);
        }

        if (choice == 5)
        {
            while (correct != 1)
            {
                printf("Please choose how many Smart water bottles you want to be delivered to your house:\n\n");
                scanf("%d", &numofbottles);

                printf("you have chosen %d bottles, is this the correct amount?\n(enter 1 for yes or 2 for no):\n\n", numofbottles);
                scanf("%d", &correct);
            }
            printf("Thankyou, your order for %d Smart water bottles will be deliver to you\nwithin 3 working days.\n\n", numofbottles);
        }
    }
    return 0;
}

megasxrl

Ответов: 1

Ответы (1)

Вы не сбрасываете правильно после одной итерации. Каждый раз устанавливайте 0:

while (choice != 6)
{
correct = 0;
...
/*rest of the code */
}

Кстати, у вас очень много дублирования кода. Вы можете просто использовать массив для хранения типов бутылок и использовать элементы массива в цикле.

2022 WebDevInsider