1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Programação' iniciada por XeniX, 13 de Novembro de 2008. (Respostas: 5; Visualizações: 1183)

  1. XeniX

    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: [​IMG][​IMG]

    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: 13 de Novembro de 2008
  2. struga

    struga 1st Folding then Sex

    acrescenta um getchar () a seguir ao que ja tens ;)
     
  3. Mr_Miguel

    Mr_Miguel Power Member

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

    Master87 Power Member

    Bastava um fflush(stdin); antes do getchar();

    Código:
      
        printf("Pressione [ENTER] para sair.\n");
        fflush(stdin);
        getchar();
        return 0;
    
     
  5. Mr_Miguel

    Mr_Miguel Power Member

    Última edição: 5 de Janeiro de 2009
  6. XeniX

    XeniX Power Member

    Obrigado a todos! Problema resolvido!
     

Partilhar esta Página