Cuando estoy introduciendo los datos me dice programa dejo de funcionar, si alguien puede ver mi error y decirme por favor
/* Se desea registrar una estructura Persona_Empleado que contenga como miembros los datos de una
persona empleado que a su vez tenga los datos de la fecha de nacimiento. En el programa se muestra
el uso de la estructura, se define una función para dar entrada a los datos de la estructura y otra
función para dar salida a los datos de una estructura persona. A la función de entrada se transmite
por dirección (&p) la variable estructura, por lo que el argumento correspondiente tiene que ser un
Ipuntero (*p) y el acceso a los campos se hace con el selector -> */
#include<stdio.h>
struct fecha{
int dia, mes, año;
};
struct persona{
char nombre[20];
int edad;
int altura;
int peso;
struct fecha f;
};
struct persona_empleado{
struct persona unapersona;
int salario;
int horas_por_semana;
};
/* Prototipo de funciones */
void entrada(struct persona_empleado *p);
void salida(struct persona_empleado up);
void main(){
/* Define una variable persona_empleado */
struct persona_empleado p;
/* Llamada a entrada() transmitiendo la direccion */
entrada(&p);
/* Salida de los datos almacenados */
salida(p) ;
}
void entrada(struct persona_empleado *p){
printf("\nIntroduzca su nombre: ");
gets(p->unapersona.nombre);
printf("Introduzca su edad: ");
scanf("%d", p->unapersona.edad);
printf("Introduzca su altura: ");
scanf("%d", p->unapersona.altura);
printf("Introduzca su peso: ");
scanf("%d", p->unapersona.peso);
printf("Introduzca su fecha de nacimiento: ");
scanf("%d %d %d", p->unapersona.f.dia,
p->unapersona.f.mes,
p->unapersona.f.año);
printf("Introduzca su salario: ");
scanf("%d", p->salario);
printf("Introduzca numero de horas");
scanf("%d", p->horas_por_semana);
}
void salida(struct persona_empleado up){
printf("\n\n\tDatos de un Empleado");
printf("\n\n\t--------------------");
printf("Nombre: %s\n", up.unapersona.nombre);
printf("Edad: %d\n", up.unapersona.edad);
printf("Fecha de nacimiento: %d-%d-%d", up.unapersona.f.dia,
up.unapersona.f.mes,
up.unapersona.f.año);
printf("Altura: %d\n", up.unapersona.altura);
printf("Peso: %d\n", up.unapersona.peso);
printf("Salario: %d\n", up.salario);
printf("Numero de horas: %d\n", up.horas_por_semana);
}
puedes indicar en que necesitas ayuda? no sabemos así sin más.... explica en todo detalle errores y dudas
cuando pide la edad e introduzco el dato me dice programa dejo de funcionar
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
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 contenidoscanf("%d", &p->unapersona.edad);