[ajuda C] IF e Else

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
 
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
 
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>
 
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");
 
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;
}
 
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:
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
 
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

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!
 
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!


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:
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.
 
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.


ya tou a ver informaçao sobre strings e bibliotecas muito obrigado a todos pelas dicas :wah:
 
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;
}
 
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:

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

A bem ou a mal, vais funcionar!

Engenharia Power :003:
 
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%
 
Back
Topo