problema programa reconocer caracter

Iniciado por raulgombru, 23 Septiembre 2010, 19:10 PM

0 Miembros y 3 Visitantes están viendo este tema.

raulgombru

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?


#include <stdio.h>
#include <math.h>

void main ()
{

char z;
int t;

printf ("Introduce un caracter");
scanf ("%c%*c", z);

if (z<57)
{
t=1;
}

else
{
if (z>97)
   
            {
                  if (z=!'a'&&z=!'e'&&z=!'i'&&z=!'o'&&z=!'u')
                  {
                  t=2;
                  }
                  else
                  {
                      t=3;
                      }
                      }
                     
    else
    {          
               if (z=!'A'&&z=!'E'&&z=!'I'&&z=!'O'&&z=!'U')
               {
               t=4;        
}

               else
               {
                   t=5;
                   }

}
}
switch (t);
{
     
                case 1:
           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.");
           break;
                case 2:
           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.");
           break;
                case 3:
           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.");
           break;
                case 4:
           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.");
           break;
                case 5:
           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.");
           break;
           
           }
}





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

Voy a ser sincero: No sé muy bien lo que voy a escribir en este blog. Lo que sí sé es que a veces necesito quejarme de cosas que me desagradan, reivindicar otras que no tengo o compartir con otros las que me gustan. ¿Qué mejor medio para hacer todo esto que internet?

http://almendrasymejillones.blogspot.com

Akai

para la operación distinto, es !=, no =!.

raulgombru

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
Almendras y Mejillones

Voy a ser sincero: No sé muy bien lo que voy a escribir en este blog. Lo que sí sé es que a veces necesito quejarme de cosas que me desagradan, reivindicar otras que no tengo o compartir con otros las que me gustan. ¿Qué mejor medio para hacer todo esto que internet?

http://almendrasymejillones.blogspot.com

Akai

en todo switch siempre debe haber un case default

raulgombru

#4
ok.. la he colocado, pero persiste el error:

switch (t);
{
     
                case 1:
           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.");
           break;
                case 2:
           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.");
           break;
                case 3:
           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.");
           break;
                case 4:
           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.");
           break;
                case 5:
           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.");
           break;
           
                 default:
                         printf ("Error. Debes introducir una letra o un dígito");
                         
           }
Almendras y Mejillones

Voy a ser sincero: No sé muy bien lo que voy a escribir en este blog. Lo que sí sé es que a veces necesito quejarme de cosas que me desagradan, reivindicar otras que no tengo o compartir con otros las que me gustan. ¿Qué mejor medio para hacer todo esto que internet?

http://almendrasymejillones.blogspot.com

Littlehorse

#5
Tienes un ; de mas en esta linea:

switch (t);

quita el ;.

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

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

void main ()


Lee este hilo: click

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

raulgombru

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?
Almendras y Mejillones

Voy a ser sincero: No sé muy bien lo que voy a escribir en este blog. Lo que sí sé es que a veces necesito quejarme de cosas que me desagradan, reivindicar otras que no tengo o compartir con otros las que me gustan. ¿Qué mejor medio para hacer todo esto que internet?

http://almendrasymejillones.blogspot.com

Akai

Podrías poner el código tal como lo tienes ahora?


Cita de: Littlehorse en 23 Septiembre 2010, 19:27 PM

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


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

Littlehorse

Cita de: 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?

De nada.

Estas utilizando mal scanf, lee este link

CitarThe 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
An expert is a man who has made all the mistakes which can be made, in a very narrow field.