Eproctux Postado Abril 1, 2012 Denunciar Share Postado Abril 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(); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Abril 1, 2012 Denunciar Share Postado Abril 1, 2012 (editado) 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 Abril 1, 2012 por Binder Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eproctux Postado Abril 1, 2012 Autor Denunciar Share Postado Abril 1, 2012 (editado) 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. Editado Abril 1, 2012 por Eproctux Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Abril 1, 2012 Denunciar Share Postado Abril 1, 2012 (editado) 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 Abril 1, 2012 por Binder Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eproctux Postado Abril 1, 2012 Autor Denunciar Share Postado Abril 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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 para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.