Ir ao conteúdo
  • Cadastre-se

C melhoria de um programa em c , trabalho da facul


Posts recomendados

preciso de ajuda para melhorar esse programa, o que posso mudar ou acrescentar ?

 


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


void entrada ();
int menu ();
void controladocervejas (float * preco);
void controladorabebida (float * preco);

//Função principal
int main(){
    int op;
    float precototal=0;   
    setlocale(LC_ALL,"");
    //Apresentação do programa
    entrada();
    do{
        op = menu();
        switch(op){
        case 1:
            controladocervejas(&precototal);       
            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 ("****          adega do moises           ****\n");
    printf ("**************************************************\n");


}
int menu (){
    int op;
    printf (" \nCardapio \n\n");
    printf ("1 - Cervejas lata 350ml \n");
    printf ("2 - Refrigerantes e sucos. \n");
    printf ("3 - Finalizar o pedido.\n");
    printf ("Digite a opção desejada: \n");
    scanf("%d", &op);
    return op;
}

void controladocervejas (float * preco) {    //preço é um ponteiro que apontará para a variavel cujo o endereço seja passado, no caso precototal da função int main
    int opcervejas;
    printf ("\n1 - Brahma Duplo malte Fardo - 33,48 R$ \n");
    printf ("2 - Skol Puro malte Fardo - 30,00 R$ \n");
    printf ("3 - Skol Fardo - 27,00 R$ \n");
    printf ("4 - Brahma Fardo - 27,00 R$ \n");
    printf ("5 - Sub zero Frado - 25,00 R$ \n");
    printf ("Digite a opção desejada: \n");
    scanf ("%d", &opcervejas);
    switch (opcervejas){
        case 1:
            printf ("\nVocê adicionou Brahma Duplo malte Fardo no seu carrinho!\n");
            *preco += 33,48;    //Acrescentando produto no preço
            break;
        case 2:
            printf ("\nVocê adicionou Skol Puro malte Fardo no seu carrinho!\n");
            *preco += 30,00;
            break;
        case 3:
            printf ("\nVocê adicionou Skol Fardo no seu carrinho!\n");
            *preco += 27,00;
            break;
        case 4:
            printf ("\nVocê adicionou Brahma Fardo no seu carrinho!\n");
            *preco += 27,00;
            break;
        case 5:
            printf ("\nVocê adicionou Sub zero Frado no seu carrinho!\n");
            *preco += 25,00;
            break;
        default:
            printf ("\nValor incorreto, tente novamente\n");
            break;
    }
}
void controladorabebida (float * preco) {
    int opbebida;
    char str [20];

    printf ("\n1 - Suco Dell vale - 6,00 R$ \n");
    printf ("2 - Refrigerante Lata - 3,00 R$\n");
    printf ("3 - Refrigerante 2L - 6,99,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 no seu carrinho!\n", str);
            *preco += 6;
            break;
        case 2:
            printf ("\nInforme o refrigerante lata: ");
            scanf ("%s", str);
            printf ("\nVocê adicionou %s lata no seu carrinho!\n", str);
            *preco += 3;
            break;
        case 3:
            printf ("\nInforme o refrigerante 2 Litros: ");
            scanf ("%s", str);
            printf ("\nVocê adicionou %s 2 Litros no seu carrinho!\n!\n", str);
            *preco += 6,99;
            break;
        default:
            printf ("\nComando incorreto, tente novamente\n");
            break;
    }
}
 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Se o programa está funcionando sem erros é o mais importante.

 

Mas eu usaria vetores nos preços e colocaria o texto dos menus em um const char.

 

Não sei se o exercício exige o uso de funções, mas não usaria nesse caso.

 

#include <stdio.h>

const char *menu_principal = 
    "\n(MENU)\n"
    "1 - Cervejas lata 350ml\n"
    "2 - Refigerantes e sucos\n"
    "3 - Finalizar o pedido\n: ";
    
const char *menu_cerveja = 
    "\n1 - Brahma Duplo malte Fardo - R$ 33,48\n"
    "2 - Skol Puro malte Fardo - R$ 30,00\n"
    "3 - Skol Fardo - R$ 27,00\n"
    "4 - Brahma Fardo - R$ 27,00\n"
    "5 - Sub zero Frado - R$ 25,00\n: ";
    
const char *menu_bebida = 
    "\n1 - Suco Dell vale - R$ 6,00\n"
    "2 - Refrigerante Lata - R$ 3,00\n"
    "3 - Refrigerante 2L - R$ 6,99\n: ";

int main(){
    float cerveja[5] = {33.48, 30, 27, 27, 25};
    float bebida[3] = {6, 3, 6.99};
    float *tipo, total = 0;
    int i;
    
    while(1){
        printf("%s",menu_principal);
        scanf("%d",&i);
        if(i == 3){break;}
        
        switch(i){
            case 1:
                printf("%s",menu_cerveja);
                tipo = cerveja;
                break;
            case 2:
                printf("%s",menu_bebida);
                tipo = bebida;
                break;
        }
        scanf("%d",&i);
        total += tipo[i - 1];
    }
    printf("TOTAL = %.2f\n", total);
    return 0;
}

 

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...