• Lunes 20 de Mayo de 2024, 13:51

Autor Tema:  Structs anidados, errores al compilar.  (Leído 1551 veces)

hectornaruto

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Structs anidados, errores al compilar.
« en: Domingo 29 de Agosto de 2010, 01:00 »
0
Antes he de decir que he empezado hace una semana y aun no tengo mucha idea de la programación en c pero lo intento.

Por más que busco no encuentro el/los errores en las lineas que me dice el compilador, lo mas seguro es que sea por mi ignorancia.

Este es el código:
Código: C
  1. // ejstruct.c---------------------Práctica de structs anidados-----------------------------------------------
  2.  
  3. #include <stdio.h>
  4.  
  5. struct fecha
  6. {
  7.     unsigned int dia, mes, anyo;
  8. };
  9.  
  10. struct persona
  11. {
  12.     char nombre[20];
  13.     unsigned int edad;
  14.     int altura;
  15.     int peso;
  16.     struct fecha fec;
  17. };
  18.  
  19. struct persona-empleado
  20. {
  21.     struct persona unapersona;
  22.     unsigned int salario;
  23.     unsigned int horas_por_semana;
  24. };
  25.  
  26. // Prototipos de funciones
  27.  
  28. void entrada(struct persona-empleado *p);
  29. void muestra(struct persona-empleado up);
  30.  
  31. void main()
  32.  
  33. {
  34. // define una variable persona-empleado
  35. struct persona-empleado p;
  36.  
  37. // llamada a entrada() transmitiendo la direccion
  38. entrada(&p);
  39.  
  40. //salida de los datos almacenados
  41. muestra(p);
  42. }
  43.  
  44. void entrada(struct persona-empleado *p)
  45. {
  46.     printf("nIntroduzca su nombre: ");
  47.     gets(p->unapersona.nombre);
  48.     printf(" introduzca su edad: ");
  49.     scanf("%d", &p->unapersona.edad);
  50.     printf("Introduzca su fecha de nacimiento: ");
  51.     scanf("%d %d %d", &p->unapersona.fec.dia, &p->unapersona.fec.mes, &p->unapersona.fec.anyo);
  52.     printf("Introduzca su salario: ");
  53.     scanf("%d", &p->salario);
  54.     printf("Introduzca numero de horas: ");
  55.     scanf("%d", &p->horas_por_semana);
  56. }
  57.  
  58. void muestra(struct persona-empleado up)
  59. {
  60.     puts("nntDatos de un empleado");
  61.     puts("nnt_____________________");
  62.     printf("Nombre: %s n",up.unapersona.nombre);
  63.     printf("Edad: %d n",up.unapersona.edad);
  64.     printf("fecha de nacimiento: %d-%d-%dn", up.unapersona.fec.dia, up.unapersona.fec.mes, up.unapersona.fec.anyo);
  65.     printf("Altura: %d n", up.unapersona.altura);
  66.     printf("Peso: %d n", up.unapersona.peso);
  67.     printf("Numero de horas: %d n", up.horas_por_semana);
  68. }
  69.  
  70.  
  71.  

Aparecen muchos errores al intentar compilar:
Código: Text
  1. hector@hector-laptop:~/C$ gcc -o ejstruct ejstruct.c
  2. ejstruct.c:17: error: expected identifier or ‘(’ before ‘-’ token
  3. ejstruct.c:26: error: expected ‘;’, ‘,’ or ‘)’ before ‘-’ token
  4. ejstruct.c:27: error: expected ‘;’, ‘,’ or ‘)’ before ‘-’ token
  5. ejstruct.c: In function ‘main’:
  6. ejstruct.c:33: error: expected identifier or ‘(’ before ‘-’ token
  7. ejstruct.c:36: error: ‘p’ undeclared (first use in this function)
  8. ejstruct.c:36: error: (Each undeclared identifier is reported only once
  9. ejstruct.c:36: error: for each function it appears in.)
  10. ejstruct.c: At top level:
  11. ejstruct.c:42: error: expected ‘;’, ‘,’ or ‘)’ before ‘-’ token
  12. ejstruct.c:56: error: expected ‘;’, ‘,’ or ‘)’ before ‘-’ token
  13.  
  14.  

Por si es de interes el ejemplo es de un libro de Joyanes.

Mi S.O es Ubuntu 10.04.

Gracias de antemano =D