Test Foro de elhacker.net SMF 2.1

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

#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?
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).

#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$
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:


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


Un saludo!