Ir para conteúdo
Fórum Script Brasil
  • 0

Cardápio em C


ThiagoCosta

Pergunta

Olá a todos!
Sou iniciante em C, estou cursando o 1º semestre em ads na faculdade, estou fazendo um trabalho onde preciso elaborar um software 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.

 

Obrigado!


 

#include <stdio.h>
#include <stdlib.h>
#include <locale.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);
    return op;
}

int controladorapizza (int op) {
int oppizza, m, c, fc,qualquer, p;

    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");
          m = 18;
          break;
      case 2:
          printf ("\nVocê adicionou pizza de Calabresa a sua bandeja!\n");
          c = 18;
          break;
      case 3:
          printf ("\nVocê adicionou pizza de Quatro Queijos a sua bandeja!\n");
          qualquer = 22;
          break;
      case 4:
          printf ("\nVocê adicionou pizza de Portuguesa a sua bandeja!\n");
          p - 22;
          break;

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

    break;}
return oppizza;
}
int controladorabebida (int op) {
int opbebida, s, sv, rl, rlv, r, rv;
char str [20];

    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);
    sv = 5;

    break;

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

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

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

    return opbebida;

}


int main(){
    setlocale(LC_ALL,"");
    int op,oppizza,opbebida;
    entrada();
    do{
        op = menu(op);
        switch(op){
        case 1:
        oppizza =  controladorapizza(oppizza);
            break;
        case 2:
        opbebida = controladorabebida(opbebida);
            break;
        }
    }while(op != 3 );
    printf("\n\n\n");
    return 0;
}

 

Editado por ThiagoCosta
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Agora não estou no computador, mas vou te passar a ideia. Crie uma variável precototal na função principal e passe o endereço dela (&precototal) para as funções secundárias (esse valor será recebido por um ponteiro, float *preço, por exemplo). Desta forma, você poderá adicionar produtos ao preço total nas funções fazendo *preço+=precoproduto (o valor apontado por preço é acrescido do valor do produto) 

Editado por Hazzu
Link para o comentário
Compartilhar em outros sites

  • 0

 

Em 16/10/2019 em 14:49, Hazzu disse:

Agora não estou no computador, mas vou te passar a ideia. Crie uma variável precototal na função principal e passe o endereço dela (&precototal) para as funções secundárias (esse valor será recebido por um ponteiro, float *preço, por exemplo). Desta forma, você poderá adicionar produtos ao preço total nas funções fazendo *preço+=precoproduto (o valor apontado por preço é acrescido do valor do produto) 

Compreendi a idéia mas não consegui por em prática, não consigo achar onde estou errando já mudei o código diversas vezes, mas a única soma que consigo é o valor dos menus.

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui, resolver!

 

O código ficou assim: 

#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(oppizza);
        tpiz = precopizza + tpiz;
            break;
        case 2:
        opbebida = controladorabebida(opbebida);
        precobebida = somabebida(opbebida);
        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 a todos pela ajuda
 

Link para o comentário
Compartilhar em outros sites

  • 0

Dei uma consertada nesse seu código e implementei a ideia que te falei. Também seria uma alternativa ao uso de ponteiros retornar o preço para a função pricipal, fazendo funções do tipo float controlador(bebida). Leia as observações que eu fiz e se tiver alguma duvida pergunte. Além disso, continue desenvolvendo o código, ele necessita de melhorias.

//Cabeçalhos
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

//Assinatura das funções. É melhor colocar a somente a assinatura no início, evitando problemas de sintaxe e melhorando o sequenciamento do codigo
void entrada ();
int menu ();
void controladorapizza (float * preço);
void controladorabebida (float * preço);

//Função principal
int main(){
    int op;
	float precototal=0;	//É melhor que o preço seja do tipo real, pois eventualmente você pode querer colocar produtos com preços envolvendo centavos
	//Você comente isso kkk 
	setlocale(LC_ALL,"");
	//Apresentação do programa
    entrada();
    do{
        op = menu();
        switch(op){
        case 1:
			controladorapizza(&precototal);		//Passando o endereço do preço total, para que posso ser alterado na função
            break;
        case 2:
			controladorabebida(&precototal);
            break;
        }
    }while(op != 3 );
	//Encerrando o programa e imprimindo o custo dos produtos
    printf("\n----------------------------------------\nCusto total dos produtos: %.2f\n----------------------------------------\n", precototal);
    return 0;
}

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

int menu (){
    int op;
    printf (" \nCardapio \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);
    return op;
}

void controladorapizza (float * preço) {	//preço é um ponteiro que apontará para a variavel cujo o endereço seja passado, no caso precototal da função int main
	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");
			*preço += 18;	//Acrescentando produto no preço
			break;
		case 2:
			printf ("\nVocê adicionou pizza de Calabresa a sua bandeja!\n");
			*preço += 18;
			break;
		case 3:
			printf ("\nVocê adicionou pizza de Pizza Franco com Catupiry a sua bandeja!\n");
			*preço += 18;
			break;
		case 4:
			printf ("\nVocê adicionou pizza de Quatro Queijos a sua bandeja!\n");
			*preço += 22;
			break;
		case 5:
			printf ("\nVocê adicionou pizza de Portuguesa a sua bandeja!\n");
			*preço += 22;
			break;
		default:
			printf ("\nValor incorreto, tente novamente\n");
			break;
	}
}
void controladorabebida (float * preço) {
	int opbebida;
	char str [20];

    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:");
    scanf ("%d", &opbebida);
    switch (opbebida){
		case 1:
			printf ("\nInforme o sabor do suco: \n");
			scanf ("%s", str);		//Não é &str, pois str já é um ponteiro, um endereço de memória
			printf ("\nVocê adicionou suco de %s a sua bandeja!\n", str);
			*preço += 5;
			break;
		case 2:
			printf ("\nInforme o refrigerante lata: ");
			scanf ("%s", str);
			printf ("\nVocê adicionou %s lata a sua bandeja!\n", str);
			*preço += 4;
			break;
		case 3:
			printf ("\nInforme o refrigerante 2 Litros: ");
			scanf ("%s", str);
			printf ("\nVocê adicionou %s 2 Litros a sua bandeja!\n", str);
			*preço += 13;
			break;
		default:
			printf ("\nComando incorreto, tente novamente\n");
			break;
	}
}

 

42 minutos atrás, ThiagoCosta disse:

Consegui, resolver!

 

O código ficou assim: 


#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(oppizza);
        tpiz = precopizza + tpiz;
            break;
        case 2:
        opbebida = controladorabebida(opbebida);
        precobebida = somabebida(opbebida);
        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 a todos pela ajuda
 

kkkk Depois de enviar minha resposta que eu vi. Aproveite para comparar

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...