Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: raulgombru en 23 Septiembre 2010, 19:10 pm



Título: problema programa reconocer caracter
Publicado por: raulgombru en 23 Septiembre 2010, 19:10 pm
He hecho un programa que reconozca el carácter introducido, y el compilador me da errores no dejándome compilar. ¿Veis que puede estar ma?


Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. void main ()
  5. {
  6.  
  7. char z;
  8. int t;
  9.  
  10. printf ("Introduce un caracter");
  11. scanf ("%c%*c", z);
  12.  
  13. if (z<57)
  14. {
  15. t=1;
  16. }
  17.  
  18. else
  19. {
  20. if (z>97)
  21.  
  22.             {
  23.                   if (z=!'a'&&z=!'e'&&z=!'i'&&z=!'o'&&z=!'u')
  24.                   {
  25.                   t=2;
  26.                   }
  27.                   else
  28.                   {
  29.                       t=3;
  30.                       }
  31.                       }
  32.  
  33.     else
  34.     {          
  35.                if (z=!'A'&&z=!'E'&&z=!'I'&&z=!'O'&&z=!'U')
  36.                {
  37.                t=4;        
  38. }
  39.  
  40.                else
  41.                {
  42.                    t=5;
  43.                    }
  44.  
  45. }
  46. }
  47. switch (t);
  48. {
  49.  
  50.                 case 1:
  51.            printf ("No es una letra. No es una vocal. No es una consonante. No es una mayúscula. No es una minúscula. Es un dígito.");
  52.            break;
  53.                 case 2:
  54.            printf ("Es una letra. No es una vocal. Es una consonante. No es una mayúscula. Es una minúscula. No es un dígito.");
  55.            break;
  56.                 case 3:
  57.            printf ("Es una letra. Es una vocal. No es una consonante. No es una mayúscula. Es una minúscula. No es un dígito.");
  58.            break;
  59.                 case 4:
  60.            printf ("Es una letra. No es una vocal. Es una consonante. No es una mayúscula. No es una minúscula. No es un dígito.");
  61.            break;
  62.                 case 5:
  63.            printf ("Es una letra. No es una vocal. Es una consonante. No es una mayúscula. No es una minúscula. No es un dígito.");
  64.            break;
  65.  
  66.            }
  67. }
  68.  




Me da problemas con el swith y con estan condiciones: "if (z=!'a'&&z=!'e'&&z=!'i'&&z=!'o'&&z=!'u')")


Título: Re: problema programa reconocer caracter
Publicado por: Akai en 23 Septiembre 2010, 19:13 pm
para la operación distinto, es !=, no =!.


Título: Re: problema programa reconocer caracter
Publicado por: raulgombru en 23 Septiembre 2010, 19:16 pm
Ok, gracias! Solo me queda el error del switch... TT:

Me dice:

case label not within a switch statement
break statement not within loop or switch


Título: Re: problema programa reconocer caracter
Publicado por: Akai en 23 Septiembre 2010, 19:18 pm
en todo switch siempre debe haber un case default


Título: Re: problema programa reconocer caracter
Publicado por: raulgombru en 23 Septiembre 2010, 19:23 pm
ok.. la he colocado, pero persiste el error:

Código
  1. switch (t);
  2. {
  3.  
  4.                 case 1:
  5.            printf ("No es una letra. No es una vocal. No es una consonante. No es una mayúscula. No es una minúscula. Es un dígito.");
  6.            break;
  7.                 case 2:
  8.            printf ("Es una letra. No es una vocal. Es una consonante. No es una mayúscula. Es una minúscula. No es un dígito.");
  9.            break;
  10.                 case 3:
  11.            printf ("Es una letra. Es una vocal. No es una consonante. No es una mayúscula. Es una minúscula. No es un dígito.");
  12.            break;
  13.                 case 4:
  14.            printf ("Es una letra. No es una vocal. Es una consonante. No es una mayúscula. No es una minúscula. No es un dígito.");
  15.            break;
  16.                 case 5:
  17.            printf ("Es una letra. No es una vocal. Es una consonante. No es una mayúscula. No es una minúscula. No es un dígito.");
  18.            break;
  19.  
  20.                  default:
  21.                          printf ("Error. Debes introducir una letra o un dígito");
  22.  
  23.            }


Título: Re: problema programa reconocer caracter
Publicado por: Littlehorse en 23 Septiembre 2010, 19:27 pm
Tienes un ; de mas en esta linea:

Código
  1. switch (t);

quita el ;.

En cuanto al default, es opcional, no es estrictamente necesario.

En cuanto a otros errores del código como este:

Código
  1. void main ()
  2.  

Lee este hilo: click (https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html)

Saludos


Título: Re: problema programa reconocer caracter
Publicado por: raulgombru en 23 Septiembre 2010, 19:36 pm
Gracias por lo del swith! quitando ese ; ya compila  ;D
Sin embargo al ejecutarlo e intrducir un carácter el programa deja de responder.. TT ideas?


Título: Re: problema programa reconocer caracter
Publicado por: Akai en 23 Septiembre 2010, 19:39 pm
Podrías poner el código tal como lo tienes ahora?



En cuanto al default, es opcional, no es estrictamente necesario.


Vaya, fallo mío entonces. No se por qué pensaba que era necesario.


Título: Re: problema programa reconocer caracter
Publicado por: Littlehorse en 23 Septiembre 2010, 19:43 pm
Gracias por lo del swith! quitando ese ; ya compila  ;D
Sin embargo al ejecutarlo e intrducir un carácter el programa deja de responder.. TT ideas?

De nada.

Estas utilizando mal scanf, lee este link (http://www.cplusplus.com/reference/clibrary/cstdio/scanf/)

Citar
The function expects a sequence of references as additional arguments, each one pointing to an object of the type specified by their corresponding %-tag within the format string, in the same order.
For each format specifier in the format string that retrieves data, an additional argument should be specified.
These arguments are expected to be references (pointers): if you want to store the result of a fscanf operation on a regular variable you should precede its identifier with the reference operator, i.e. an ampersand sign (&), like in:


    int n;
    scanf ("%d",&n);


Te recomendaría que revises los apuntes de clase si es que tienes, o que busques un buen libro para comenzar con los conceptos básicos implicados. Ademas, utiliza el buscador del foro, ya que este tema esta tratado varias veces y podrás encontrar varios posts para guiarte.

Cualquier cosa ya sabes.

Saludos