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

bug em programa c

Discussão em 'Programação' iniciada por frog, 29 de Maio de 2006. (Respostas: 12; Visualizações: 984)

  1. frog

    frog Power Member

    Ola fiz um mini-programa em C que quase nao serve para nada, so serve para vcs digitarem dois numerose ele diz qual e o maior:lol: (inutil!!!), mas foi o meu prmeiro

    #include <conio.h>
    #include <stdio.h>

    main() {
    int a, b;

    printf("Digite a: ");//Saida
    scanf("%d", &a); //Entrada
    printf("Digite b: ");
    scanf("%d", &b);

    if(a>b)
    printf("A e maior que B");
    if(a<b)
    printf("A e menor que B");
    else
    printf("Sao iguaizinhos");
    getch();
    }

    o problema e que como vcs vem tenho um frase para dizer qunado eles sao iguais so qu qunado eu ponho a maior que b aparece a seguinte frase"
    A e maior que BSao iguaizinhos" sff digame qual e o erro
     
  2. jahred

    jahred Power Member

    isso é pk o else está dentro do 2º if, ou seja, metes a > b, ele testa if (a>b) e escreve que a é maior que b, certo? a seguir testa if (a < b), e como não é vdd não escreve nada, mas a seguir meteste o else, ou seja, ele a seguir a testar (a < b) e verificar que é falso, ele entra no else e faz o que lá está dentro! tens que meter em vez do 2º if , um else if... assim:

    #include <conio.h>
    #include <stdio.h>

    main() {
    int a, b;

    printf("Digite a: ");//Saida
    scanf("%d", &a); //Entrada
    printf("Digite b: ");
    scanf("%d", &b);

    if(a>b)
    printf("A e maior que B");
    else if(a<b)
    printf("A e menor que B");
    else
    printf("Sao iguaizinhos");
    getch();
    }

    acho que assim irá resultar...

    ah, e para que é a livraria conio?
     
  3. DarTaKaum

    DarTaKaum Power Member

    biblioteca. e nao sei.
     
  4. jahred

    jahred Power Member

    lol, biblioteca, tem tudo livros.......
     
  5. HecKel

    HecKel The WORM

    Boas!

    De facto o teu problema é mesmo o que o jahred referiu. Do primeiro if para o segundo não tens qualquer instrução de paragem ou nenhum outro tipo de validação.

    O programa verifica normalmente o primeiro if, se entrar neste é desnecessário verificar qualquer um dos outros mas da forma como tu tens ele verifica. Isto porque o segundo if NÃO ESTÁ dentro do primeiro.

    Um outro método (de má programação...), seria em vez do ultimo else meteres outro if com a devida condição. Assim ele verificava TODOS os ifs, mas claro que só iria entrar num. A sugestão que te dou é tornares o código o mais limpo e eficas possivel, ou seja, seguires a sugestão do jahred.

    abraços, HecKel
     
  6. frog

    frog Power Member

    obrigado

    Muito obrigado pelas vossas sugestoes, realmente funcionaram!
    Tenho uma outra duvida quando eu escrevo este caracter "é" no codigo fonte , depois no programa ja complado aparece "Ú".
    Adeus e muito obrigado
     
  7. HecKel

    HecKel The WORM

    estou na dúvida se é problema da codificação do ficheiro concretamente dita, se é problema de interpretação do compilador. De qualquer das formas a justificação é simples, caracteres ditos especiais por vezes não são devidamente apresentados após a compilação/interpretação do ficheiro.

    Como não tenho certeza da origem do problema..., certifica-te que a codificação do ficheiro não é UTF.

    abraços, HecKel
     
  8. jahred

    jahred Power Member

    yah, esse problema tb não sei resolver. o que eu faço é U', assim ja da pra perceber... nem metendo o código ascii para o caracter Ú ele funciona...
     
  9. frog

    frog Power Member

    Ok vou exprimentar
    Obigado
     
  10. MarcosFonseca

    MarcosFonseca Power Member

    para utilizares caracters especiais tens que utilizar sempre a tabela ascii. para veres essa tabela vais ao msdn e procuras ascii...comigo resulta sempre...
     
  11. Gurzi

    Gurzi Power Member

    ajuda

    Boas ... primeiro que tudo tens os ifs mal pensados e pior ainda mal executados..
    Fases um if, asseguir outro com um else, logo vais ter sempre dois outputs(não é bem o que tu queres)

    e cuidado que é getchar() e não getch();

    um abraço, qualquer coisa diz.. fica bem
     
  12. Gurzi

    Gurzi Power Member

    obrigad

    obrigado, desconhecia mesmo o getch
     

Partilhar esta Página