Ir para conteúdo
Fórum Script Brasil
  • 0

Erro com if


Eproctux

Pergunta

galera sou novo no forum,gostaria de saber o que está havendo com este codigo ele está indo direto para o else eu n consigo entrar com valor algum.

#include<conio.h>
#include<stdio.h>
main()
{
  char c[2];
   printf("Digite um caracter Alfanumerico  .: ");
   scanf("%c",&c[0]);
   if((c[0] == 0) || (c[0] == 1) || (c[0] == 2) || (c[0] == 3) || (c[0] == 4) ||
    (c[0] == 5) || (c[0] == 6) || (c[0] == 7) || (c[0] == 8) || (c[0] == 9))
   {
        printf("Tipo numerico ");
   }
   else  if((c[0] == 'a') || (c[0] == 'A') || (c[0] == 'e') || (c[0] == 'E') || 
   (c[0] == 'i') || (c[0] == 'I') || (c[0] == 'u') || (c[0] == 'U'))
   {
        printf("Tipo Vogal ");
   } 
   else  if(c[0] == 'b' || c[0] == 'B' || c[0] == 'c' || c[0] == 'C' || c[0] == 'd' || c[0] == 'D' || 
   c[0] == 'f' || c[0] == 'F' || c[0] == 'g' || c[0] == 'G' || c[0] == 'h' || c[0] == 'H' || c[0] == 'j'
   || c[0] == 'J' || c[0] == 'k' || c[0] == 'K' || c[0] == 'l' || c[0] == 'L' || c[0] == 'm' || c[0] == 'M'
   || c[0] == 'n' || c[0] == 'N' || c[0] == 'p' || c[0] == 'P' || c[0] == 'q' || c[0] == 'Q' || c[0] == 'r' 
   || c[0] == 'R' || c[0] == 's' || c[0] == 'S' || c[0] == 't' || c[0] == 'T' || c[0] == 'v' || c[0] == 'V'
   || c[0] == 'x' || c[0] == 'X' || c[0] == 'w' || c[0] == 'W' || c[0] == 'y' || c[0] == 'Y' || c[0] == 'z' || c[0] == 'Z')
   {
        printf("Tipo Consoante ");
   }
   else
   {
        printf(" Tipo caracter especial ou invalido!!! "); 
   }   
    
      
getch();
}

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Opa, percebi alguns detalhes:

- Você está testando, caracter(vogal/consoante), tipo inteiro, caracteres especias, ou seja 3 tipos diferentes com uma variavel declarada como char.

Não é possível, uma variavel ser char e int ao mesmo tempo.

- Você declarou uma variavel char do tamanho 2, e está testando apenas 1 caracter.

- Não se compara string com sinal de "==", para isso use a função strcmp. No exemplo abaixo testa, se o nome digitado é igual a "joao" então acertou,senao errou..

Exemplo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main(){

char nome[4];
printf("Digite uma palavra\n");
gets(nome);      

if (!strcmp(nome, "joao"))
    printf("Acertou\n");
else            
    printf("Errou...\n");
  
system("pause");      
return(0);      
}
Para achar se a variavel é vogal ou consoante você poderia fazer de 2 maneiras: 1) Inclua a biblioteca #include <ctype.h> para usar a função "(strchr)". Onde o 1º parâmetro você coloca todas as palavras que quer localizar e no 2º parâmetro a variável onde deseja comparar.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h> 

int main()
{
   char letra;
   printf("Digite um caracter Alfanumerico  .: ");
   scanf("%s",&letra);
   
   if(strchr("aeiouAEIOU",letra)!=0)
        printf("E vogal!");
   else
        printf("E consoante!");
      
   getch();      
   return 0;
}
2) Ou assim:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>


   int main() {
      
    char letra;
      
    printf("Digite um letra do alfabeto:");
    scanf("%s",&letra);
    
    if((letra == 'a') || (letra == 'e') || (letra == 'i') || (letra == 'o') || (letra == 'u'))
    
       printf("\n\nA letra e vogal!!");
    
    else
    
       printf("\n\nA letra e consoante!!");
    
    getch();      
    return 0;     
}
Para localizar inteiros:
#include<conio.h>
#include<stdio.h>
main()
{
   int n;
   printf("Digite um caracter Alfanumerico  .: ");
   scanf("%d",&n);
   
   if((n == 0) || (n == 1) || (n == 2) || (n == 3) || (n == 4) ||
      (n == 5) || (n == 6) || (n == 7) || (n == 8) || (n == 9))
   
        printf("Tipo numerico ");
   else 
       printf(" Tipo caracter especial ou invalido!!! "); 
   
   getch();
   return 0;
   
}
Ou se preferir, faça assim:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h> 

  int main(){

   int n;
   char letra;
   
   //Localiza tipo de letra
   printf("Digite um caracter do alfabeto.:");
   scanf("%s",&letra);
  
   if(strchr("aeiouAEIOU",letra)!=0)
        printf("E vogal!");
   else
        printf("E consoante!");
   
   printf("\n");
  
   //Verifica o numero digitado. 
   printf("Digite um numero inteiro .: ");
   scanf("%d",&n);
  
   if((n == 0) || (n == 1) || (n == 2) || (n == 3) || (n == 4) ||
      (n == 5) || (n == 6) || (n == 7) || (n == 8) || (n == 9))
  
        printf("Tipo numerico ");
   else
       printf(" Tipo caracter especial ou invalido!!! ");
  
   printf("\n");
   getch();
   return 0; 
}

Editado por Binder
Link para o comentário
Compartilhar em outros sites

  • 0

Muito boa sua explicação , entaum pelo que eu entendi não tem como misturar caracter inteiro com string em uma so entrada para comparar?

entendi fiz assim e deu certo da uma olhada :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h> 

int main()
{
   char letra;
   printf("Digite um caracter Alfanumerico  .: ");
   scanf("%s",&letra);
   
   if(strchr("aeiouAEIOU",letra)!=0)
        printf("E vogal!");
   else if(strchr("bcdfghjklmnpqrstvxwyzBCDFGHJKLMNPQRSTVXWYZ",letra)!=0)
        printf("E consoante!");
    else if(strchr("1234567890",letra)!=0)
    {
        printf("\x82 numerico ");
    }
    else
    printf("\x82 caracter especial !!!");
      
   getch();      
   return 0;
}

so me explica está parte : )!=0

muito obrigado ajudou muito.

Editado por Eproctux
Link para o comentário
Compartilhar em outros sites

  • 0

1) Como expliquei anteriormente, não misture variáveis interias com variáveis do tipo char. No seu exemplo, você continua cometendo o mesmo erro.

2) Não vejo necessidade de testar isso aqui:

else if(strchr("bcdfghjklmnpqrstvxwyzBCDFGHJKLMNPQRSTVXWYZ",letra)!=0)
        printf("E consoante!");
Se a variável digitada não for vogal, ela irá ser consoante.Isso aqui já resolve o problema:
if(strchr("aeiouAEIOU",letra)!=0)
        printf("E vogal!");
   else
        printf("E consoante!");

3) Sobre a função strchr, caso o retorno seja diferente de 0 (zero), é porque encontrou o caracter digitado(condição de teste foi verdadeiro). Se não encontrou vai retornar 0 (zero)(condição de teste foi falso).

Editado por Binder
Link para o comentário
Compartilhar em outros sites

  • 0
1) Como expliquei anteriormente, não misture variáveis interias com variáveis do tipo char. No seu exemplo, você continua cometendo o mesmo erro.

2) Não vejo necessidade de testar isso aqui:

else if(strchr("bcdfghjklmnpqrstvxwyzBCDFGHJKLMNPQRSTVXWYZ",letra)!=0)
        printf("E consoante!");
Se a variável digitada não for vogal, ela irá ser consoante.Isso aqui já resolve o problema:
if(strchr("aeiouAEIOU",letra)!=0)
        printf("E vogal!");
   else
        printf("E consoante!");

3) Sobre a função strchr, caso o retorno seja diferente de 0 (zero), é porque encontrou o caracter digitado(condição de teste foi verdadeiro). Se não encontrou vai retornar 0 (zero)(condição de teste foi falso).

Entendi, é que eu preciso entrar com um unico caracter alfanumerico e preciso identificar se é vogal consoante numerico ou caracter especil não so os dois,no meu exemplo ae em cima deu certo o que eu queria fazer mais vlw pela dica de não usar junto.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...