Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mari2diaz en 20 Julio 2018, 00:50 am



Título: Ayuda con estructuras anidadas
Publicado por: mari2diaz en 20 Julio 2018, 00:50 am
Cuando estoy introduciendo los datos me dice programa dejo de funcionar, si alguien puede ver mi error y decirme por favor
Código
  1. /* Se desea registrar una estructura Persona_Empleado que contenga como miembros los datos de una
  2. persona empleado que a su vez tenga los datos de la fecha de nacimiento. En el programa se muestra
  3. el uso de la estructura, se define una función para dar entrada a los datos de la estructura y otra
  4. función para dar salida a los datos de una estructura persona. A la función de entrada se transmite
  5. por dirección (&p) la variable estructura, por lo que el argumento correspondiente tiene que ser un
  6. Ipuntero (*p) y el acceso a los campos se hace con el selector -> */
  7.  
  8. #include<stdio.h>
  9.  
  10. struct fecha{
  11. int dia, mes, año;
  12. };
  13.  
  14. struct persona{
  15. char nombre[20];
  16. int edad;
  17. int altura;
  18. int peso;
  19. struct fecha f;
  20. };
  21.  
  22. struct persona_empleado{
  23. struct persona unapersona;
  24. int salario;
  25. int horas_por_semana;
  26. };
  27.  
  28. /* Prototipo de funciones */
  29.  
  30. void entrada(struct persona_empleado *p);
  31. void salida(struct persona_empleado up);
  32.  
  33. void main(){
  34.  
  35. /* Define una variable persona_empleado */
  36. struct persona_empleado p;
  37.  
  38. /* Llamada a entrada() transmitiendo la direccion */
  39.    entrada(&p);
  40.  
  41.    /* Salida de los datos almacenados */
  42.    salida(p) ;
  43.  
  44. }
  45.  
  46. void entrada(struct persona_empleado *p){
  47.  
  48. printf("\nIntroduzca su nombre: ");
  49. gets(p->unapersona.nombre);
  50.  
  51. printf("Introduzca su edad: ");
  52. scanf("%d", p->unapersona.edad);
  53.  
  54.  
  55. printf("Introduzca su altura: ");
  56. scanf("%d", p->unapersona.altura);
  57.  
  58. printf("Introduzca su peso: ");
  59. scanf("%d", p->unapersona.peso);
  60.  
  61. printf("Introduzca su fecha de nacimiento: ");
  62. scanf("%d %d %d", p->unapersona.f.dia,
  63.    p->unapersona.f.mes,
  64. p->unapersona.f.año);
  65.  
  66. printf("Introduzca su salario: ");
  67. scanf("%d", p->salario);
  68.  
  69. printf("Introduzca numero de horas");
  70. scanf("%d", p->horas_por_semana);
  71.  
  72. }
  73.  
  74. void salida(struct persona_empleado up){
  75. printf("\n\n\tDatos de un Empleado");
  76. printf("\n\n\t--------------------");
  77. printf("Nombre: %s\n", up.unapersona.nombre);
  78. printf("Edad: %d\n", up.unapersona.edad);
  79. printf("Fecha de nacimiento: %d-%d-%d", up.unapersona.f.dia,
  80.    up.unapersona.f.mes,
  81. up.unapersona.f.año);
  82. printf("Altura: %d\n", up.unapersona.altura);
  83. printf("Peso: %d\n", up.unapersona.peso);
  84. printf("Salario: %d\n", up.salario);
  85. printf("Numero de horas: %d\n", up.horas_por_semana);
  86. }
  87.  


Título: Re: Ayuda con estructuras anidadas
Publicado por: engel lex en 20 Julio 2018, 00:53 am
puedes indicar en que necesitas ayuda? no sabemos así sin más.... explica en todo detalle errores y dudas


Título: Re: Ayuda con estructuras anidadas
Publicado por: mari2diaz en 20 Julio 2018, 00:55 am
cuando pide la edad e introduzco el dato me dice programa dejo de funcionar


Título: Re: Ayuda con estructuras anidadas
Publicado por: engel lex en 20 Julio 2018, 01:07 am
tienes multiples de errores...

main siempre debe ser int y retornar 0 si todo fue bien... algunos compiladores soportan void, pero no está en el standard

para los nombres de las variables no se usan caracteres no ascii como la "ñ" porque no es standard y muchos compiladores no lo soportan

Código:
scanf("%d", p->unapersona.edad);

esto te dará un error de segmentación de memoria (el que tienes ahorita) porque eso lleva & por delante para poder acceder a su contenido
Código:
scanf("%d", &p->unapersona.edad);