Problema con Switch

Iniciado por higor24, 17 Noviembre 2010, 17:21 PM

0 Miembros y 1 Visitante están viendo este tema.

higor24

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...

#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=tolower(c); Esto que significa?

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

Shell Root

#1
La función tolower() convierte un Tipo de dato carácter a minúscula (A-Z a a-z).

#include <stdio.h>

char c;
int main(){
   printf("Ingrese un carácter\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\n");
      }else{
         printf("Es consonante\n");
      }
   }else{
      if((c>='0') && (c<='9')){
         printf("Es numérico\n");
      }else{
         printf("Otro caracter\n");
      }
   }

   return 0;
}


Resultado,
Código (PoC) [Seleccionar]
alex@shellroot:~/Escritorio$ gcc PoC.c
alex@shellroot:~/Escritorio$ ./a.out
Ingrese un carácter
e
Es vocal
alex@shellroot:~/Escritorio$ ./a.out
Ingrese un carácter
1
Es numérico
alex@shellroot:~/Escritorio$ ./a.out
Ingrese un carácter
w
Es consonante
alex@shellroot:~/Escritorio$
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Fer995

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:


if ( (c>='A') && (c<='Z') )
c += 32;


Un saludo!