Exercício em c - If's [RESOLVIDO]

XeniX

Power Member
Boas!
Estou finalmente na univ, e deparei-me com um exercicio de programação que é fácil, já fiz o algoritmo, mas a implementação não dá.
Queria então que vocês o fizessem por mim.

Lol tou a brincar :D

Aqui fica o problema:

Atenção: podem usar if's e loops. NÃO podem usar case 1...... Nem podem usar funçoes ou estroturas de dados. é mesmo o básico.

Aqui fica o meu programa:
Código:
#include <stdio.h>


int main ()
{
    int cod;
    float preco, total;
        
    printf("\nIntroduza o preco do produto:");
    scanf("%f", &preco);
    
    
    printf("Introduza o codigo do produto:");
    scanf("%d", &cod);
    
        
        if (cod==10)
        {
        total=0.06*preco+preco;                
        printf("%f", total);
       
        }
                               
        else if (cod==20)
        {
        printf("%f", preco);
    
        }
                        
        else if (cod==30)
        {
        total=0.05*preco+preco;
        printf("%f", total);
        
        }
                        
        else if (cod==40)
        {
        total=0.08*preco+preco;                        
        printf("%f", total);                        
        
        }
                        
        else if (cod==50)
        {
        total=0.1*preco+preco;                        
        printf("%f", total);                        
        
        }
                        
        else
        {            
        printf("Input errado. Tente outravez. (prima enter para encerrar)");        
        
        }
        
        getchar ();
        return 0;       
}


DIAGNÓSTICO:
-A função getchar() não funciona
-O programa não verifica nenhuma condiçao if, mesmo que verdadeira
-O programa parece morrer logo apos o segundo input


Obrigado por ajudarem\tentarem ajudar
Eu hoje vou falar com mais um pessoal pa ver se consigo resolver o problema.

Já agora eu estou a usar o devcpp. Acho que o devcpp é muito "picky" com o getchar() ....
 
Última edição:
Parece ser um problema típico de caracteres deixados pelo scanf no standard input. Uma regra que se pode utilizar é: depois de cada chamada ao scanf, limpar todos os caracteres que ele deixou até ao '\n' inclusivé (while (getchar() != '\n')):

Código:
#include <stdio.h>

int main ()
{
    int cod;
    float preco, total;
    
    printf("Introduza o preco do produto: ");
    scanf("%f", &preco);
    while (getchar() != '\n');
    
    
    printf("Introduza o codigo do produto: ");
    scanf("%d", &cod);
    while (getchar() != '\n');
    
    
    if (cod==10)
    {
        total=0.06*preco+preco;                
        printf("%f\n", total);
        
    }
    
    else if (cod==20)
    {
        printf("%f\n", preco);
        
    }
    
    else if (cod==30)
    {
        total=0.05*preco+preco;
        printf("%f\n", total);
        
    }
    
    else if (cod==40)
    {
        total=0.08*preco+preco;                        
        printf("%f\n", total);                        
        
    }
    
    else if (cod==50)
    {
        total=0.1*preco+preco;                        
        printf("%f\n", total);                        
        
    }
    
    else
    {            
        printf("Input errado. Tente outravez. (prima enter para encerrar)");        
        
    }
    
    printf("Pressione [ENTER] para sair.\n");
    getchar();
    return 0;       
}

Compilado e testado. Mas digo-te já que se pretendes que ele introduza os dados de novo (caso "input errado"), terás que meter o teu código dentro de um ciclo.
 
Back
Topo