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

[Problema] IF's mal feitos

Discussão em 'Programação' iniciada por frog, 4 de Julho de 2006. (Respostas: 9; Visualizações: 1251)

  1. frog

    frog Power Member

    Ola a todos!

    Como este forum me tem ajudade imenso, decedi perguntar outra coisa aqui...:-D

    Eu ja pus esta duvida no [email protected], e eles respodenderam-me, mas eu nao fiquei muito esclarecido, e alem disso deram-me um codigo reformulado mas, nao fazia a mesma coisa que o que eu queria que fizesse!(
    Atencao: Eu nao estou a criticar o [email protected], euso queria outras opiniões:))

    Eu gostava no meu codigo de ter um else, para se o numero fosse diferente e 1,2,3 ele dissese numero incorecto , alem disso tenho um grande problema que e o IVA aparece sempre 0

    Aqui vai o codigo, abraços

    Código:
    [/COLOR][/COLOR][COLOR=#339933]#include <stdio.h>[/COLOR]
     
    [COLOR=#993333]int[/COLOR] main [COLOR=#66CC66]([/COLOR][COLOR=#66CC66])[/COLOR]
    [COLOR=#66CC66]{[/COLOR]
        [COLOR=#993333]float[/COLOR] a;
        [COLOR=#993333]int[/COLOR] iva,custo_total;
       [URL="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"][COLOR=#000066]printf[/COLOR][/URL][COLOR=#66CC66]([/COLOR][COLOR=#FF0000]"Escolha:[COLOR=#000099][B]\n[/B][/COLOR][1] para produtos comerciais[COLOR=#000099][B]\n[/B][/COLOR][2] para roupa, e artigos para o lar[COLOR=#000099][B]\n[/B][/COLOR][3] para comida[COLOR=#000099][B]\n[/B][/COLOR][COLOR=#000099][B]\n[/B][/COLOR]>>"[/COLOR][COLOR=#66CC66])[/COLOR];
       scanf[COLOR=#66CC66]([/COLOR][COLOR=#FF0000]"%f"[/COLOR] , &a[COLOR=#66CC66])[/COLOR];
       [COLOR=#B1B100]if[/COLOR] [COLOR=#66CC66]([/COLOR]a==[COLOR=#CC66CC]1[/COLOR][COLOR=#66CC66])[/COLOR]
       iva = [COLOR=#CC66CC]100[/COLOR] / custo_total * [COLOR=#CC66CC]21[/COLOR];
      
       [COLOR=#B1B100]if[/COLOR] [COLOR=#66CC66]([/COLOR]a==[COLOR=#CC66CC]2[/COLOR][COLOR=#66CC66])[/COLOR]
           iva = [COLOR=#CC66CC]100[/COLOR] / custo_total * [COLOR=#CC66CC]12[/COLOR];
       [COLOR=#B1B100]if[/COLOR] [COLOR=#66CC66]([/COLOR]a==[COLOR=#CC66CC]3[/COLOR][COLOR=#66CC66])[/COLOR]
           iva = [COLOR=#CC66CC]100[/COLOR] / custo_total* [COLOR=#CC66CC]5[/COLOR];
     
      [URL="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"][COLOR=#000066]printf[/COLOR][/URL][COLOR=#66CC66]([/COLOR][COLOR=#FF0000]"Quanto custa o produto?[COLOR=#000099][B]\n[/B][/COLOR][COLOR=#000099][B]\n[/B][/COLOR]>> "[/COLOR][COLOR=#66CC66])[/COLOR];
      scanf[COLOR=#66CC66]([/COLOR][COLOR=#FF0000]"%d"[/COLOR] , &custo_total[COLOR=#66CC66])[/COLOR];
      [URL="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"][COLOR=#000066]printf[/COLOR][/URL][COLOR=#66CC66]([/COLOR][COLOR=#FF0000]" O IVA do produto e: %d"[/COLOR] , iva[COLOR=#66CC66])[/COLOR];
      getch[COLOR=#66CC66]([/COLOR][COLOR=#66CC66])[/COLOR];
           
     
        
    [COLOR=#66CC66]}
    
    P.S-[COLOR=White]Copiei directamente do [email protected], por isso e que ficou as cores![/COLOR]
    [/COLOR][COLOR=Red][COLOR=White]
     
  2. MaxDamage

    MaxDamage Power Member

    Código:
    #include <stdio.h>
     
    int main ()
    {
        int a, iva, custo_total;
            
        printf("Escolha:\n[1] para produtos comerciais\n[2] para roupa, e artigos para o lar\n[3] para comida\n\n>>");
        scanf("%d" , &a);
        
        printf("Quanto custa o produto?\n\n>> ");
        scanf("%d" , &custo_total);
           
        if (a==1)
         iva = 100 / custo_total * 21;
        else if (a==2)
         iva = 100 / custo_total * 12;
        else if (a==3)
         iva = 100 / custo_total* 5;
        else
         printtf(" msg de erro \n ");	
       
        printf(" O IVA do produto e: %d" , iva);
        getch();
    }
    
    deve ser qualquer coisa deste tipo. O problema é que estavas a calcular o iva quando ainda não tinhas o custo_total
     
  3. fRaGoSo

    fRaGoSo Power Member

    Porque é que não utilizas um case, assim caso nao for 1, 2 ou 3 ele devolve-te o else.
     
  4. frog

    frog Power Member

    Eu ate sei usar switch...case
    Mas agora comprei um livro novo de C e so quero usar aquilo que ate agora dei no livro, mas o que eu vou ler a seguir e ja o case por isso, no meu proximo programa ja vou usar case

    Cumps
     
  5. xplor

    xplor Power Member

    acho que seria também boa politica utilizares a variavel "a" como um inteiro e não como um float.
     
  6. frog

    frog Power Member

    Porque?
    Eu so usei float caso o preço fosse com casas decimais!
     
  7. Tuaregue

    Tuaregue Power Member

    só que a variável "a", é a variável que controla o input do menu, por isso int serve muito bem e não utiliza tanta memória (não é que isso seja problema a não ser que estejas num 286/386 e afins), float deverias usar para o custo_total e para o iva.

    O IVA é zero, porque o valor da variável IVA resulta de uma operação matemática.

    Código:
    iva = 100 / custo_total * 21 => custo_total = 0
    Isto é pura matemática, deverias inicializar o custo_total com um valor diferente de 0 antes de aplicares a formula do iva (olha para o código do MaxDamage)
     
    Última edição: 4 de Julho de 2006
  8. xplor

    xplor Power Member

    e nem sempre quando as variaveis não são inicializadas o seu conteudo é zero, cmg tem sempre lixo.

    a melhor solução é perguntar ao utilizador o custo total do produto antes de calcular o iva
     
  9. Tuaregue

    Tuaregue Power Member

    certo, isto é C. Ele poderia fazer era logo a inicialização das variáveis logo na declaração.
     
  10. frog

    frog Power Member

    Obrigado pelas respostas

    Cumps
     

Partilhar esta Página