Ir ao conteúdo
  • Cadastre-se

Problema em C


Posts recomendados

 

Opa, tudo bem? Comecei a estudar C hoje e estou tendo problemas ao rodar o programa.

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

int main(){
    setlocale(LC_ALL, "Portuguese");
    
    int codigo,quantidade;
    float preco,vcodigo,precof;
    char refrigerante;

    printf("Por favor , insira o código do produto , considerando que:\n1=Cachorro Quente preço unitário:R$4.00\n2=X-Salada preço unitário:R$4.50\n3=X-Frango preço unitário:R$5.00");
    printf("\n4=Torrada Simples preço unitário:R$2.00\n5=Refrigerante preço unitário:R$1.50\n");
    scanf("%i", &codigo);
    printf("Agora, insira a quantidade.\n");
    scanf("%i", &quantidade);
    
    if ((codigo > 0) && (codigo < 6))
    {
        if(codigo==1)
        {
            printf("Você selecionou o cachorro quente.");
            vcodigo=4;
        }
        else if(codigo==2)
        {
            printf("Você selecionou o X-Salada.");
            vcodigo=4.5;
        }
        else if(codigo==3)
        {
            printf("Você selecionou o X-Frango.");
            vcodigo=5;
        }
        else if(codigo==4)
        {
            printf("Você selecionou o Torra Simples.");
            vcodigo=2;
        }
        else
        {
            printf("Você selecionou o Refrigerante.");
            vcodigo=1.5;
        }
        
    }
    else
    {
        printf("Código inválido.");
    }
    
    if (codigo>0 && codigo<5)
    {
        printf("\nVocê gostaria de um refrigerante adicional?\n");
        scanf("%c\n", &refrigerante);
    }
    
    if (refrigerante="s")
    {
        preco=vcodigo*quantidade+1.5;
    }
    else
    {
        preco=vcodigo*quantidade;
    }
    
    if(preco>20)
    {
        precof=preco*0.9;
    }
    else
    {
        precof=preco;
    }
    
    printf("O preço final da compra é: R$%f", &precof);
    
    return 0;
}

 

O preço final sempre sai 0 e não sei porque. =/

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

    Boa noite @Pedro Henrique Marchese

    O que posso dizer é que em seu código temos alguns erros e digitação ou conceitos

observe:

 

if (codigo>0 && codigo<5)
{
  printf("\nVocê gostaria de um refrigerante adicional?\n");
  scanf("%c\n", &refrigerante);
}

    Vemos na função scanf, a máscara (string format) de '\n' no final de entrada.

    Não é o problema de o qual buscas solução, porém desta forma que estais

com scanf exigindo um ENTER extra, o que não dever ser intencional.

 

if (refrigerante="s")
{
  preco=vcodigo*quantidade+1.5;
}

    Vemos aqui, um erro de conceito, string é vetor de tipos char sua comparação

em C necessita de função adequada, importante saber que os tipos

char e string não comparasse diretamente. Enfim o correto é:

variávelPrimitivaTipoA == vPTipoA, em outras palavras, refrigerante == 's'.

Tome bastante cuidado, pois comparações são feitas com '==' dois sinais de igualdade 

em C. Para prevenir tamanho erro, é que muito comum alguns copiarem à constante antes desta forma: 's' == refrigerante.

Portanto, este foi o erro que ocasionou o bug.

 

Até:tw_grin:

 

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

Boa noite @Mauro Britivaldo! Primeiramente, muito obrigado pelas dicas. :D 

Infelizmente o preço ainda não está sendo impresso pelo programa :/ 

 

 if ((codigo > 0) && (codigo < 6))
    {
        if(codigo==1)
        {
            printf("Você selecionou o cachorro quente.");
            vcodigo=4;
        }
        else if(codigo==2)
        {
            printf("Você selecionou o X-Salada.");
            vcodigo=4.5;
        }
        else if(codigo==3)
        {
            printf("Você selecionou o X-Frango.");
            vcodigo=5;
        }
        else if(codigo==4)
        {
            printf("Você selecionou o Torra Simples.");
            vcodigo=2;
        }
        else
        {
            printf("Você selecionou o Refrigerante.");
            vcodigo=1.5;
        }
        
    }
    else
    {
        printf("Código inválido.");
    }
    
    if (codigo>0 && codigo<5)
    {
        printf("\nVocê gostaria de um refrigerante adicional?\n");
        scanf("%c\n", &refrigerante);
    }
    
    if (refrigerante='s')
    {
        preco=vcodigo*quantidade+1.5;
    }
    else
    {
        preco=vcodigo*quantidade;
    }
    
    if(preco>20)
    {
        precof=preco*0.9;
    }
    else
    {
        precof=preco;
    }
    
    printf("O preço final da compra é: R$%f", &precof);

Segue o anexo da imagem:print.thumb.png.f8b8e43ba8c5d3ae6d750de6fc62b701.png

 

Obrigado pela atenção e ajuda.

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

@Pedro Henrique Marchese    seu código está bom, mas está confuso, por causa desse else if, então coloquei esse switch na hora de fazer as escolhas .  veja como ficaria seu código com algumas modificações :

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

int main(){
    setlocale(LC_ALL, "Portuguese");

    int codigo,quantidade;
    float preco,vcodigo,precof,g;
    char refrigerante[1];
    printf("  *******************************************************************");
    printf("\n  *  Por favor , insira o código do produto , considerando que:     *");
    printf("\n  *      1  =  Cachorro Quente preço unitário:R$4.00                *");
    printf("\n  *      2  =  X-Salada    preço  unitário : R$ 4.50                *");
    printf("\n  *      3  =  X-Frango    preço  unitário : R$ 5.00                *");
    printf("\n  *      4  =  Torrada Simples preço unitário:R$2.00                *");
    printf("\n  *      5  =  Refrigerante preço unitário : R$ 1.50                *");
    printf("\n  *                                                                 *");
    printf("\n  *******************************************************************");
    printf("\n                                ");
    scanf("%d",&codigo);
     switch(codigo){
        case 1:
            printf("\nVocê selecionou o cachorro quente.");
            vcodigo=4;
            break;
        case 2:
            printf("\nVocê selecionou o X-Salada.");
            vcodigo=4.5;
            break;
        case 3:
            printf("\nVocê selecionou o X-Frango.");
            vcodigo=5;
            break;
        case 4:
            printf("\nVocê selecionou o Torra Simples.");
            vcodigo=2;
            break;
        case 5:
            printf("\nVocê selecionou o Refrigerante.");
            vcodigo=1.5;
            break;
        default:
            printf("\nCódigo inválido.\n\n");
            return 0;
    }
    printf("\nAgora, Insira A Quantidade. ");
    fflush(stdin);
    scanf("%d",&quantidade);
    if (codigo>0 && codigo<5){
        printf("Você Gostaria De Um Refrigerante Adicional?   S/N ");
        fflush(stdin);
        scanf("%c",&refrigerante);
    }
    if(refrigerante[0]=='s'){
        preco=vcodigo*quantidade+1.5;
    }
    else{
        preco=vcodigo*quantidade;
    }
    precof=preco;
    if(preco > 20){precof = preco * 0.9;}
    printf("\nO Preco Final Da Compra é: R$ %.2f\n\n",precof);
    return 0;
}

 

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

Visitante
Este tópico está impedido de receber novas respostas.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!