Eproctux Posted April 1, 2012 Report Share Posted April 1, 2012 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(); } Quote Link to comment Share on other sites More sharing options...
0 Binder Posted April 1, 2012 Report Share Posted April 1, 2012 (edited) 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 April 1, 2012 by Binder Quote Link to comment Share on other sites More sharing options...
0 Eproctux Posted April 1, 2012 Author Report Share Posted April 1, 2012 (edited) 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 : )!=0muito obrigado ajudou muito. Edited April 1, 2012 by Eproctux Quote Link to comment Share on other sites More sharing options...
0 Binder Posted April 1, 2012 Report Share Posted April 1, 2012 (edited) 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 April 1, 2012 by Binder Quote Link to comment Share on other sites More sharing options...
0 Eproctux Posted April 1, 2012 Author Report Share Posted April 1, 2012 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. Quote Link to comment Share on other sites More sharing options...
Question
Eproctux
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.
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.