Soma de produtos de um cardápio em C.

Olá a todos!
Sou iniciante em programação, estou cursando o 1º semestre em ads na faculdade e estou aprendendo a programar em C, estou fazendo um trabalho onde preciso elaborar um programa para uma pizzaria, contendo cardápio, preço dos produtos, login e etc…

estou com um problema em relação ao cardápio, onde não sei como somar os valores dos itens escolhidos pelo “cliente” através do cardápio se puderem me ajudar em relação a como colocar os preços referentes a cada produto para que eles somem automaticamente quando o cliente escolher o que deseja, pois não sei se devo fazer como constantes globais, ou uma função específica para isso.

Segue o que consegui fazer até agora.

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


void entrada (){
printf ("*************************************\n");
printf ("****          Bem Vindo          ****\n");
printf ("****              a              ****\n");
printf ("****          UNIPIZZA           ****\n");
printf ("*************************************\n");
}

 int menu (){
    int op;
    printf (" \nCardápio \n\n");
    printf ("1 - Pizzas. \n");
    printf ("2 - Bebidas. \n");
    printf ("3 - Finalizar o pedido.\n");
    printf ("Digite a opção desejada: \n");
    scanf("%d", &op);

    printf ("\n");
    ;
    return op;
}

int controladorapizza (int op) {
int oppizza;

    printf ("\n1 - Pizza Mussarela - 18,00 R$ \n");
    printf ("2 - Pizza Calabresa - 18,00 R$ \n");
    printf ("3 - Pizza Franco com Catupiry - 18,00 R$ \n");
    printf ("4 - Pizza Quatro Queijos - 22,00 R$ \n");
    printf ("5 - Pizza Portuguesa - 22,00 R$ \n");
    printf ("Digite a opção desejada: \n");
    scanf ("%d", &oppizza);

    switch (oppizza){
      case 1:
          printf ("\nVocê adicionou pizza de Mussarela a sua bandeja!\n");
          break;
      case 2:
          printf ("\nVocê adicionou pizza de Calabresa a sua bandeja!\n");

          break;
      case 3:
          printf ("\nVocê adicionou pizza de Frango com Catupiry a sua bandeja!\n");

          break;
      case 4:
          printf ("\nVocê adicionou pizza de Quatro Queijos a sua bandeja!\n");

          break;

      case 5:
          printf ("\nVocê adicionou pizza de Portuguesa a sua bandeja!\n");

          break;

      default:
        printf ("\nValor incorreto, tente novamente\n");

    break;}
return oppizza;
}
int controladorabebida (int op) {
int opbebida;
char str [10];

    printf ("\n1 - Suco - 5,00 R$ \n");
    printf ("2 - Refrigerante Lata - 4,00 R$\n");
    printf ("3 - Refrigerante 2L - 13,00 R$\n");
    printf ("Digite a opção desejada: \n");
    scanf ("%d", &opbebida);

    switch (opbebida){
    case 1:
    printf ("\nInforme o sabor do suco: \n");
    scanf ("%s", &str);
    printf ("\nVocê adicionou suco de %s a sua bandeja!\n", str);


    break;

    case 2:
    printf ("\nInforme o refrigerante lata: ");
    scanf ("%s", &str);
    printf ("\nVocê adicionou %s lata a sua bandeja!\n", str);

    break;

    case 3:
    printf ("\nInforme o refrigerante 2 Litros: ");
    scanf ("%s", &str);
    printf ("\nVocê adicionou %s 2 Litros a sua bandeja!\n", str);

    break;

    default:
    printf ("\nComando incorreto, tente novamente\n");
    break;}

    return opbebida;

}

int somapizza (int oppizza){
int precopizza;

 switch (oppizza){
      case 1:
          precopizza = 18;
          break;
      case 2:
          precopizza = 18;

          break;
      case 3:
          precopizza = 18;

          break;
      case 4:
          precopizza = 22;

          break;

      case 5:
          precopizza = 22;

          break;}
          return precopizza;
          }


int somabebida (int opbebida){
int precobebida;

 switch (opbebida){
      case 1:
          precobebida = 5;
          break;
      case 2:
          precobebida = 4;

          break;
      case 3:
          precobebida = 13;

          break;
    }
          return precobebida;
          }



int main(){
    setlocale(LC_ALL,"");
    int op,oppizza,opbebida;
    float tpiz = 0;
    float tbeb = 0;
    float totalpedido;
    int precopizza,precobebida;
    entrada();
    do{
        op = menu(op);
        switch(op){
        case 1:
        oppizza =  controladorapizza(oppizza);
        precopizza = somapizza(precopizza);
        tpiz = precopizza + tpiz++;
            break;
        case 2:
        opbebida = controladorabebida(opbebida);
        precobebida = somabebida(precobebida);
        tbeb = precobebida + tbeb++;

            break;
        }

    }while(op != 3 );
    totalpedido = tpiz+tbeb;
    printf ("O valor total de seu pedido é: %.2f", totalpedido);
    printf("\n\n\n");
    return 0;}

Obrigado!

2 curtidas

Pena que ainda dão aula de C nas faculdades em lugar de C++ ou Perl.
Acho que você pode ir limpando a tela com
system(“cls”) ou system(“clear”) dependendo de estar no windows/dos ou macos/linux.

case 1:
    oppizza =  controladorapizza(oppizza);
    //precopizza = somapizza(precopizza);
    precopizza = somapizza(oppizza);
    //tpiz = precopizza + tpiz++;
    tpiz = precopizza + tpiz;

case 2:
        opbebida = controladorabebida(opbebida);
        //precobebida = somabebida(precobebida);
        precobebida = somabebida(opbebida);
        //tbeb = precobebida + tbeb++;
        tbeb = precobebida + tbeb;

Primeiro, no somapizza e no somabebida, você deve mandar como parâmetro o oppizza e o opbebida assim sua função vai saber qual opção foi escolhida e poder retornar o preço correto.

Segundo, na soma total de pizza e na de bebida (tpiz e tbeb) você não deve usar “++”, esse operador faz somar +1.

Espero ter ajudado, qualquer duvida só chamar.

:+1:

Cara, to nisso aqui faz 2 dias alterando de tudo, você realmente me ajudou muito! Obrigado!!