Jump to content
Fórum Script Brasil
  • 0

Erro com if


Eproctux

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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; 
}

Edited by Binder
Link to comment
Share on other 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.

Edited by Eproctux
Link to comment
Share on other 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).

Edited by Binder
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...