Как я могу не перезаписать свои переменные на языке C? - PullRequest
0 голосов
/ 04 августа 2020

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

Например, человек выбирает второй вариант и 5 единиц количества, а затем снова выбирает второй вариант, но 2, ответ кода будет засчитан только 2, поскольку он был последние данные, полученные переменной.

Я благодарен за любую помощь.

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>

int main()
{
    int opcao, quantidade[7];
    float total[7], final = 0;
    char produto[7][20];

    strcpy_s(produto[0], "Cachorro-Quente");
    strcpy_s(produto[1], "Xis Salada");
    strcpy_s(produto[2], "Xis Bacon");
    strcpy_s(produto[3], "Misto");
    strcpy_s(produto[4], "Salada");
    strcpy_s(produto[5], "Água");
    strcpy_s(produto[6], "Refrigerante");

    setlocale(LC_ALL, "");

    //Menu para os pedidos

    printf("**********************CARDÁPRIO**************************\n");
    printf("ITEM     PRODUTO             CÓDIGO        PREÇO UNITÁRIO\n");
    printf("---------------------------------------------------------\n");
    printf("1        Cachorro-Quente     100                 5,00\n");
    printf("---------------------------------------------------------\n");
    printf("2        Xis Salada          101                 8,79\n");
    printf("---------------------------------------------------------\n");
    printf("3        Xis Bacon           102                 9,99\n");
    printf("---------------------------------------------------------\n");
    printf("4        Misto               103                 6,89\n");
    printf("---------------------------------------------------------\n");
    printf("5        Salada              104                 4,80\n");
    printf("---------------------------------------------------------\n");
    printf("6        Água                105                 3,49\n");
    printf("---------------------------------------------------------\n");
    printf("7        Refrigerante        106                 4,99\n");
    printf("*********************************************************\n");
    
    printf("\nDigite o número do item : ");
    scanf_s("%d", &opcao);

    while ((opcao >= 1) && (opcao <= 7))
    {
        switch (opcao)
        {

        case 1: // cachorro-quente
            printf("Digite quantos itens deseja comprar: ");
            scanf_s("%d", &quantidade[0]);
            total[0] = quantidade[0] * 5.00;
            break;

        case 2: // xis salada
            printf("Digite quantos itens deseja comprar: ");
            scanf_s("%d", &quantidade[1]);
            total[1] = quantidade[1] * 8.79;
            break;

        case 3: // xis bacon
            printf("Digite quantos itens deseja comprar: ");
            scanf_s("%d", &quantidade[2]);
            total[2] = quantidade[2] * 9.99;
            break;

        case 4: // misto
            printf("Digite quantos itens deseja comprar: ");
            scanf_s("%d", &quantidade[3]);
            total[3] = quantidade[3] * 6.89;
            break;

        case 5: // salada
            printf("Digite quantos itens deseja comprar: ");
            scanf_s("%d", &quantidade[4]);
            total[4] = quantidade[4] * 4.80;
            break;

        case 6: // agua
            printf("Digite quantos itens deseja comprar: ");
            scanf_s("%d", &quantidade[5]);
            total[5] = quantidade[5] * 3.49;
            break;

        case 7: // refrigerante
            printf("Digite quantos itens deseja comprar: ");
            scanf_s("%d", &quantidade[6]);
            total[6] = quantidade[6] * 4.99;
            break;
        
        }


        printf("\nDigite o número do item : ");
        scanf_s("%d", &opcao);

                            
    }

    printf("\nItem           Quantidade     Valor\n");

    for (int i = 0; i < 7; i++)
    {
        if (quantidade[i] > 0) 
        {
            printf(produto[i]);
            printf("          %.i         %.2f\n", quantidade[i], total[i]);
            final = final + total[i];
            
        }



    }
    printf("\n");
    printf("Total da compra dos pedidos: %.2f\n", final);


        system("pause");
        return 0;
    
}

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Вы можете изменить расчет итога [x] как:

...
//For initializing total[x] to zero.
float total[7] = {0};  
...
printf("\nDigite o número do item : ");
scanf_s("%d", &opcao);

    while ((opcao >= 1) && (opcao <= 7))
    {
        switch (opcao)
        {

        case 1: // cachorro-quente
            printf("Digite quantos itens deseja comprar: ");
            scanf_s("%d", &quantidade[0]);
            //Add the pervious total to current total
            total[0] = total[0] + quantidade[0] * 5.00;
            break;
...
0 голосов
/ 04 августа 2020

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

int opcao, quantidade[7] = {0}, count;  // initialize the quantity to 0 for each

...
        printf("Digite quantos itens deseja comprar: ");
        scanf_s("%d", &count);
        quantidade[0] += count;
        total[0] = quantidade[0] * 5.00;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...