Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: higor24 en 17 Noviembre 2010, 17:21 pm



Título: Problema con Switch
Publicado por: higor24 en 17 Noviembre 2010, 17:21 pm
Hola, estoy tratando de desarrollar un programa, en donde el usuario presione una tecla y luego into, y el programa diga si se trata de una vocal/consonante/numero, todo esto usando switch en vez de if-else. Pero el problema es que no se como hacerle para que una variable pueda contener una letra o un número. Un código que se acerca a lo que busco es este, pero...

Código:
#include <stdio.h>
#include<conio.h>
int c;
void main()
{ printf (“Ingrese un caracter\n”);
scanf (“%c”,&c);
c=tolower(c);
if ((c>=’a’)&&(c<=’z’))
if ( (c== ‘a’)|| (c== ‘e’)|| (c== ‘i’)|| (c== ‘o’)|| (c== ‘u’))
printf(“Es vocal”);
else
printf(“Es consonante”);
else
if((c>=’0’) && (c<=’9’))
printf(“Es numérico”);
else
printf(“Otro caracter”);
getch();
}

Hay cosas de ahi que no entiendo, por ejemplo...

Código:
c=tolower(c);
Esto que significa?

Luego, si primero declara un entero, como es que despues usa %c?


Título: Re: Problema con Switch
Publicado por: Shell Root en 17 Noviembre 2010, 19:05 pm
La función tolower() convierte un Tipo de dato carácter a minúscula (A-Z a a-z).

Código
  1. #include <stdio.h>
  2.  
  3. char c;
  4. int main(){
  5.   printf("Ingrese un carácter\n");
  6.   scanf("%c", &c);
  7.   c = tolower(c);
  8.   if ( (c>='a') && (c<='z') ){
  9.      if ( (c== 'a') || (c== 'e') || (c== 'i') || (c== 'o') || (c== 'u')){
  10.         printf("Es vocal\n");
  11.      }else{
  12.         printf("Es consonante\n");
  13.      }
  14.   }else{
  15.      if((c>='0') && (c<='9')){
  16.         printf("Es numérico\n");
  17.      }else{
  18.         printf("Otro caracter\n");
  19.      }
  20.   }
  21.  
  22.   return 0;
  23. }

Resultado,
Código
  1. alex@shellroot:~/Escritorio$ gcc PoC.c
  2. alex@shellroot:~/Escritorio$ ./a.out
  3. Ingrese un carácter
  4. e
  5. Es vocal
  6. alex@shellroot:~/Escritorio$ ./a.out
  7. Ingrese un carácter
  8. 1
  9. Es numérico
  10. alex@shellroot:~/Escritorio$ ./a.out
  11. Ingrese un carácter
  12. w
  13. Es consonante
  14. alex@shellroot:~/Escritorio$


Título: Re: Problema con Switch
Publicado por: Fer995 en 19 Noviembre 2010, 16:41 pm
Hola!

La respuesta de "Shell Root" es buena.

Yo solo añado que si no te gusta la funcion tolower la puedes quitar y poner esto en su lugar:

Código
  1. if ( (c>='A') && (c<='Z') )
  2. c += 32;
  3.  

Un saludo!