Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Orb en 15 Noviembre 2015, 20:21 pm



Título: Problemas en C
Publicado por: Orb en 15 Noviembre 2015, 20:21 pm
Me puse a probar cosas e intente hacer un programa que te pidiera nombre apellido y edad, y si la edad estaba comprendida entre 18 y 22 devolvia tu nombre por pantalla.

Código
  1. #include <stdio.h>
  2.  
  3.  
  4. char nombre;
  5. char apellidos;
  6. int edad;
  7. int main (void)
  8. {
  9. printf ("Introduzca su nombre");
  10. scanf ("%s", &nombre);
  11. printf ("Introduzca sus apellidos");
  12. scanf ("%s", &apellidos);
  13. printf ("Por último introduzca su edad");
  14. scanf ("%n", &edad);
  15. if ((edad>18) && (edad<=22))
  16. printf ("%s", &nombre);
  17. else
  18. printf ("No cumple los requisitos");
  19. }

Tuve que poner

if ((edad>18) && (edad<=22))

porque si ponia if ((edad=>18) && (edad<=22))

me devolvia el siguiente error ;

error: expected expression before ‘>’ token
 if ((edad=>18) && (edad<=22))

Decidí quitar el = y probar a ver, y el problema llega cuando compilo, ejecuto , pregunta nombre, introduzco, pide apellido , lo pongo y me sale al lado, introducir la edad pegado de no cumple los requisitos.

¿Alguien podria ayudarme?


Título: Re: Problemas en C
Publicado por: A.I. en 15 Noviembre 2015, 20:50 pm

Código
  1. scanf ("%n", &edad);
  2.  

prueba con %d


Título: Re: Problemas en C
Publicado por: Br1ant en 15 Noviembre 2015, 22:30 pm
Como diría @A.I. tendrías que usar %d en vez de %n.

Citar
porque si ponia if ((edad=>18) && (edad<=22))

me devolvia el siguiente error ;

error: expected expression before ‘>’ token
if ((edad=>18) && (edad<=22))

El signo está mal. Es:

Código
  1. if ((edad>=18) && (edad<=22))

Además creo que tienes que especificar la longitud de los char:

Código
  1. char nombre[10], apellidos[10];


Título: Re: Problemas en C
Publicado por: v4char en 15 Noviembre 2015, 23:37 pm
te he hecho un programa pero en apellidos no puedes poner espacios porque si no te lo detecta como otra y salta
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.   char nombre[20];
  6.   char apellidos[40];
  7.   int edad;
  8.  
  9.   printf("Nombre: ");
  10.   scanf("%20s", nombre);
  11.  
  12.   printf("Apellidos: ");
  13.   scanf("%40s", apellidos);
  14.  
  15.   printf("Edad: ");
  16.   scanf("%i", &edad);
  17.  
  18.   if (18 > edad > 22)
  19.   {
  20.      printf("Hola %s %s", nombre, apellidos);
  21.   } else
  22.   {
  23.      printf("No cumples los requisitos");
  24.   }
  25.  
  26.   return 0;
  27. }


Título: Re: Problemas en C
Publicado por: MAFUS en 16 Noviembre 2015, 20:04 pm
Prueba con esto:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main() {
  5.   char nombre[20];
  6.   char apellidos[40];
  7.   int edad;
  8.  
  9.   printf("Nombre: ");
  10.   fgets(nombre, 19, stdin);
  11.   *strchr(nombre, '\n') = '\0';
  12.   printf("Apellidos: ");
  13.   fgets(apellidos, 39, stdin);
  14.   *strchr(apellidos, '\n') = '\0';
  15.   printf("Edad: ");
  16.   scanf("%i", &edad);
  17.  
  18.   if (edad >= 18 && edad <= 22) {
  19.      printf("Hola %s %s", nombre, apellidos);
  20.   }
  21.   else {
  22.      printf("No cumples los requisitos");
  23.   }
  24.  
  25.   return 0;
  26. }
  27.  
Con fgets lees toda la cadena de entrada hasta pulsar ENTER y recoge hasta un máximo de caracteres que le has informado como último parámetro de la función.
Cómo también lee el carácter de nueva línea debes convertirlo en carácter nulo, y eso es lo que hace la línea donde se encuentra la función strchr.