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

[ajuda C] IF e Else

Discussão em 'Programação' iniciada por Andre14w, 3 de Dezembro de 2008. (Respostas: 20; Visualizações: 1014)

  1. Andre14w

    Andre14w Power Member

    O que estou a fazer de errado?

    Código:
    main()
    {
         char a;
         printf("Tudo bem?\n");
         scan("%c",&a);
         if(a==sim) printf("porreiro\n");
         else printf("olha... azar\n");
         system("PAUSE");
      
    }
    
    pelo menos sei que é muita coisa
     
  2. Baderous

    Baderous Banido

    1) Falta aí um 'f' no scanf.
    2) O que estás a fazer é ler um caracter (ou seja, um dígito ou uma letra) para a variável 'a' que é do tipo char. Mas estás a comparar com algo que não é nada ou, quando muito, seria uma variável, que é o 'sim'. Ora visto da perspectiva que tu queres, o que pretendes é comparar a frase que introduzes com a palavra "sim", ou seja, tu queres é comparar strings (cadeias de caracteres) e não apenas um caracter. Tens de rectificar o tipo de 'a' para ser uma string e depois usar a função strcmp() para comparar com a string "sim". Tens de incluír o header <string.h>. http://www.cplusplus.com/reference/clibrary/cstring/strcmp.html
     
  3. c4l1m3r0

    c4l1m3r0 Power Member

    Muita coisa mesmo!

    Começa logo no inicio. Tens que especificar o tipo da função. No caso de main(), metes sempre

    Código:
    int main()
    O erro seguinte é na função scan, que não é scan, é scanf. Depois a não pode conter 3 caracteres que queres para escrever "Sim", apenas pode levar um.

    Por fim, e dado que estás a dizer que a função main() vai devolver um int, no final do código antes da chaveta final tens que ter

    Código:
    return 0;
    O 0 aqui diz ao sistema operativo que correu tudo bem :)

    Caso não estejas a incluir bibliotecas (que nao estás a mostar), também tens que fazer antes de tudo tudo, o seguinte comando:

    Código:
    #include <stdio.h> 
     
  4. Andre14w

    Andre14w Power Member

    obrigado pelas dicas...

    eu fizesse codigo á pressa nem vi q me faltou o F no scan.. mas tirando isso

    eu fiz isto

    Código:
    #include <stdio.h>
    int main()
    {
         char a[10];
         printf("Tudo bem?\n");
         scanf("%c",&a);
         if(a=="sim")
         printf("porreiro\n");
         else
         printf("olha... azar\n");
         system("PAUSE");
      return 0;
    }
    

    se tirar as aspas do IF ele da erro...

    mas se as puser funciona so que só lê o printf do ELSE, isso quer dizer q se eu independentemente do que eu puser.. se for SIM ou outra coisa ele vai acabar por fazer o printf("olha... azar\n"); e nunca faz o printf("porreiro\n");
     
  5. Baderous

    Baderous Banido

    Já te disse que a comparação de strings se faz com a função strcmp.
     
  6. Andre14w

    Andre14w Power Member

    mas o problema é q eu nem sei o q é isso... nao percebo nada disto ainda so aprendi os prints scans e ifs
     
  7. m00s

    m00s Power Member

    podes fazer algo assim, fica mais simples:

    Código:
    #include <stdio.h>
    int main()
    {
         char a;
         printf("\nTudo bem? (S/N): ");
         scanf("%c",&a);
         if(a=='S')
            printf("\nporreiro!\n");
         else
            printf("\nolha... azar!\n");
         system("PAUSE");
      return 0;
    }
     
  8. S0ul

    S0ul Power Member

    Código:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    int main()
    {
         char a[10];
         printf("Tudo bem?\n");
         gets(a); //Ou podes usar scanf("%s",a);
         if(strcmp(a,"sim")==0)//Compara string se forem iguais devolve 0
                    printf("porreiro\n");
          else
                    printf("olha... azar\n");
       
         getch();
      return 0;
    }
    
    
    Um bocadinho de pesquisa não te fazia mal ;)!
     
    Última edição: 3 de Dezembro de 2008
  9. Andre14w

    Andre14w Power Member

    bem obrigado mas ainda falta uma coisa.. eu nao queria um S/N .. queria mesmo a palavra SIM e NAO. nem q me ponham o codigo com outras coisas sem ser IF's porque se o puserem aqui eu olho e entendo a logica do codigo e fico logo a saber para outras alturas
     
  10. S0ul

    S0ul Power Member

    Atenção eu pus o código de boa vontade, mas lembrate que aqui não vais encontrar muitas almas caridosas, aliás o nosso objectivo é dar luzes sobre os problemas que as pessoas metem e tentamos ajudar por forma a essas pessoas conseguirem resolver os problemas por eles próprios, dai que se tivesses pesquisado um bocadinho terias obtido o resultado que querias!
     
  11. Andre14w

    Andre14w Power Member

    S0ul muito obrigado! era mesmo isso
     
  12. Andre14w

    Andre14w Power Member


    eu tenho andado a responder aos topicos enquanto outros vao aparecendo e so vejo depois de fazer reply...

    ta certo e eu apoio isso ao máximo.. mas é que eu pesquisei mas nem sabia muito bem o que pesquisar, e so comecei a programar ha uns dias nao percebo nada disto ainda
     
    Última edição: 3 de Dezembro de 2008
  13. Bad_Cop

    Bad_Cop Power Member

    estás a aprender, certo? começa pelo principio e por principio quero dizer tipos de dados. tens mesmo de aprender isso caso contrário vais continuar a ter dúvidas do género desta.

    para encontrares a solução para esta dúvida no google podias pesquisar por "string compare C" e encontravas muita coisa. mas parece-me que não tens noção do que são strings em C nem de como as abordar minimamente. é que a tua dúvida era bastante simples: como nativamente não existem strings em C não existe um operador '==' para as comparar. tens de recorrer a uma função de outra biblioteca.
     
  14. Andre14w

    Andre14w Power Member


    ya tou a ver informaçao sobre strings e bibliotecas muito obrigado a todos pelas dicas :wah:
     
  15. Mach4_PT

    Mach4_PT Power Member

    Código:
    int main()
    {
         char a,b,c;
         printf("\nTudo bem? (S/N): ");
         scanf("%c%c%c",&a,&b,&c);
         if(a=='S' && b =='i' && c=='m' )
            printf("\nporreiro!\n");
         else
            printf("\nolha... azar!\n");
         getchar();
      return 0;
    }
    Ou entao:

    Código:
    int main()
    {
         char a[4];
         printf("\nTudo bem? (S/N): ");
         scanf("%s",a);
         if(strcmp(a,"Sim")==0)
            printf("\nporreiro!\n");
         else
            printf("\nolha... azar!\n");
         getchar();
      return 0;
    }
     
  16. fonte

    fonte Power Member

    Hehehe gostei. Solução à engenheiro...

    A bem ou a mal, vais funcionar!

    Engenharia Power :003:
     
  17. owny

    owny Power Member

    Aproveitando aqui o topico:
    é possivel substituir uma variavel de tipo inteiro por uma do tipo caracter?
     
  18. Andre14w

    Andre14w Power Member

    nao sei se isto te ajuda.. tenta dar um exemplo, tenho 16 anos e comecei agora a dar programação nao sei muito ainda.. o máximo que fiz foi uma calculadora em linha de comandos.

    vê la isto

    numeros inteiros

    int %d

    fraccionarios

    float %f

    caracteres

    char %c

    gostava tb que explicassem as strings assim por alto porque percebi mais ou menos mas nao a 100%
     
  19. IComeFromBehind

    IComeFromBehind Power Member

    :\ Esse não é o tipo de solução que se espera de um engenheiro.
     
    Última edição: 5 de Dezembro de 2008
  20. Mach4_PT

    Mach4_PT Power Member

Partilhar esta Página