Jump to content
Fórum Script Brasil
  • 0

Cardápio em C


Question

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;
}

 

Edited by ThiagoCosta
Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 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) 

Edited by Hazzu
Link to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148691
    • Total Posts
      644530
×
×
  • Create New...