+ Responder ao Tópico



  1. #1
    juniox
    Visitante

    Padrão Erro em C

    alguem pode me ajudar com um probleminha ? eh simples o programa, mas nao to achando o erro..! quando rodo o programa, ele pergunta se eh mamifero, quando respondo, ele faz duas perguntas.. ex: "eh bibepe? eh quadrupede"... entendeu ?

    #include <stdio.h>
    void main()
    {
    char ANIMAL;

    printf("O animal e&acute; Mamifero? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("E&acute; quadrupede? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute; )
    {
    printf("E&acute; carnivoro? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; um LEAO");
    }
    else
    {
    printf("E&acute; herbivoro? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; um CAVALO");
    }
    else
    {
    printf("Entao o animal nao eh um quadrupede");
    }
    }
    }
    else
    {
    printf("E&acute; bipede? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; onivoro? (s/n");
    fflush(stdin);
    scanf("&c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; o HOMEM");
    }
    else
    {
    printf("O animal e&acute; frutifero? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; um MACACO");
    }
    else
    {
    printf("O animal NAO E&acute; UM BIPEDE");
    }

    }

    }
    else
    {
    printf("O animal e&acute; voador? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; um MORCEGO");

    }
    else
    {
    printf("E&acute; Aquatico? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; uma BALEIA");
    }
    else
    {
    printf("Entao nao e&acute; um MAMIFERO");
    }
    }
    }
    }
    }
    else
    {
    printf("E&acute; uma ave? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("E&acute; uma ave NAO-VOADORA? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("E&acute; uma ave tropical? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; um AVESTRUZ");
    }
    else
    {
    printf("E&acute; uma ave polar? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal &acute;e um PINGUIM");
    }
    else
    {
    printf("O animal NAO E&acute; UMA AVE");
    }
    }
    }
    else
    {
    printf("E&acute; uma ave nadadora? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; um PATO");
    }
    else
    {
    printf("E&acute; uma ave de rapina? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; uma AGUIA");
    }
    else
    {
    printf("Nao ha dados sobre esse animal");
    }
    }
    }

    }
    else
    {
    printf("E&acute; um reptil? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("Possui casco? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; uma TARTARUGA");
    }
    else
    {
    printf("O animal e&acute; carnivoro? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; um CROCODILO");
    }
    else
    {
    printf("E&acute; um animal SEM PATAS? (s/n)");
    fflush(stdin);
    scanf("%c",&ANIMAL);
    if (ANIMAL == &acute;s&acute
    {
    printf("O animal e&acute; uma COBRA");
    }
    else
    {
    printf("O animal NAO E&acute; UM REPTIL");
    }

    }
    }

    }
    else
    {
    printf("Nao ha dados sobre esse animal");
    }
    }
    }
    }


    [ Esta mensagem foi editada por: juniox em 04-06-2003 02:30 ]

  2. #2
    juniox
    Visitante

    Padrão Erro em C

    puts...

    aqui ficou meio complicado.... pois ficou sem indentacao....

  3. #3

    Padrão Erro em C

    Quanto a identacao, tenta editar sua mensagem, e optar pela opcao texto simples ou coisa parecida.

    Quanto ao programa, vale perguntar se vc sabe do bug padrao do scanf???
    Vc tambem nao foi claro quanto ao erro, diga exatamente o que acontece.

    O bug do scanf eh o seguinte (as vezes ele "come" a proxima entrada) sendo necessario deixar um getchchar(); assim mesmo vazio para evitar esse erro.. se for esse o seu problema... eu vou procurar uma materia que fiz sobre isso..e se der ponho aqui...

  4. #4
    Visitante

    Padrão Erro em C

    ae.. valew..

    bom o erro era que quando eu respondia a primeira pergunta, ele fazia duas perguntas depois.. ou seja, ele ignorava o ´else´...

    nao sei por que isso acontece..., mas beleza...

    seguinte.. eu programo C no linux.. porem na faculdade eh so no windows... e , por exemplo, a funcao fflush(stdin), clrscr(), etc... precisam do conio.h, porém o conio.h é do windows.... e como eu deveria fazer para que os programas rodassem no linux tambem ? tem algum outro comando que substitua esses ?

    os artigos que fiz em c na facul tao em www.juniox.cjb.net/c/
    inclusive o script dos mamiferos, com indentacao.... www.juniox.cjb.net/c/mamiferos.c

    valew

  5. #5
    juniox
    Visitante

    Padrão Erro em C

    ae... eu tinha me esquecido de logar...

    <IMG SRC="images/forum/icons/icon_biggrin.gif">

  6. #6

    Padrão Erro em C

    Olha..amigo... o clrscr() eh para ser (A.N.S.I) , ISTO EH FUNCIONAR EM TODOS OS COMPILADORES, LOGO INDEPENDENTE DE O.S. "mas tudo isso eh muito relativo.
    Por exemplo no C-Qnx [Qnx eh um O.S. unix davida.. antigo] a funcao clrscr(); "que limpa a tela".. eh assim:
    term_clear(_CLS_SCRH);
    exigindo o cabecalho #include <tcap.h>
    Isso para rodar em terminais burros (que tb tem no linux).
    Para rodar em computadores centrais ou nodos de rede podiamos usar um clearscreen davida padrao, mas sempre usavamos o do terminal para evitar bugs...

    Agora o fflush(stdin); nao lembro de cabeca.. mas vou dar uma confirida..(o meu amansa burro tah no trabalho..ehhehe)..

  7. #7

    Padrão Erro em C

    Um link interessante... eu sei que tem um outro..onde vc pode usar as paginas como um verdadeiro manual.. e tirar duvidas como ...essa..(se determinada funcao eh ansi ou nao...e qual eh a include que tem que ser declarada..., etc)..


    http://www.portalc.nip.net/

  8. #8
    Visitante

    Padrão Erro em C

    Ola,

    O erro esta na função scanf(), pois mesmo q vc diga que será um caracter recenido, através do parâmetro "%c", virá também o CR q vc digitou para confirmar o dado. Minha opinião é vc criar uma função que recebe uma string e retorna o primeiro caracter a mesma, ex.:
    char chRecornaByte()
    {
    char aBuf[256];

    scanf("%s", aBuf);
    fflush(stdin);
    return( aBuf[0] );
    }

    Agora, vc troca seus scanf("%c",&ANIMAL) para ANINAL = chRecebeByte();

    Espero ter ajudado.

    Abracos,

    Mauro Cordon
    [email protected]

  9. #9

    Padrão Erro em C

    Bom eu nunca tive esse problema do scanf <IMG SRC="images/forum/icons/icon_smile.gif"> e tbm nao uso o fflush, bom mas tem muito if nesse negocio hehe, chego ate a te dizer que em prolog ficaria mais facil <IMG SRC="images/forum/icons/icon_smile.gif"> bom mas nao eh o caso. vamos nessa.

    bom nao eh de C, e sim C++ , mas... #include <iostream.h> e utilize cin

    cin << VAR;

    substui o seus scanf <IMG SRC="images/forum/icons/icon_smile.gif">
    parece simples entretanto, voce disse quando usa umas duas tres vezes o scanf se "borra" todo e nao funciona mais, voce poderia usar um vetor de caracter e ficar sempre incrementando <IMG SRC="images/forum/icons/icon_smile.gif"> nao eh a melhor claro mas bom sei la.. <IMG SRC="images/forum/icons/icon_smile.gif">