Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Duda estructuras anidadas (Sencillo)

Estas en el tema de Duda estructuras anidadas (Sencillo) en el foro de C/C++ en Foros del Web. Buenas a todos! Veréis, estoy empezando con estructuras anidadas y me salta una duda porque me da error al compilar. Quiero por ejemplo un registro ...
  #1 (permalink)  
Antiguo 06/09/2014, 11:21
 
Fecha de Ingreso: julio-2013
Mensajes: 11
Antigüedad: 10 años, 9 meses
Puntos: 0
Duda estructuras anidadas (Sencillo)

Buenas a todos!

Veréis, estoy empezando con estructuras anidadas y me salta una duda porque me da error al compilar.
Quiero por ejemplo un registro de 10 alumnos, y conocer de cada uno de 8 asignaturas que existen, la nota en cada uno de los tres trimestres:

Código:
#include <stdio.h>
#define TAM 2 

struct alumnos
{
	char nombre[50];
	char apellidos[60];
	char dni[10];
	int edad;
	struct asignaturas asignatura[8]; 
};

struct asignaturas
{
	char nombre[40];
	float notas[3];
};


int main() {
//Aquí defino las dos estructuras con sus vectores correspondientes:
	struct alumnos alumno[TAM];
	struct asignaturas asignatura[8];
}

Y el compilador me dice:
Untitled 17.c:10:31: error: array has incomplete element type 'struct asignaturas'
struct asignaturas asignatura[8];
^
Untitled 17.c:10:9: note: forward declaration of 'struct asignaturas'
struct asignaturas asignatura[8];


¿Qué es lo que está mal?

Gracias!!
  #2 (permalink)  
Antiguo 06/09/2014, 12:13
Avatar de jc_moj  
Fecha de Ingreso: septiembre-2009
Ubicación: Andalucía
Mensajes: 137
Antigüedad: 14 años, 7 meses
Puntos: 12
Respuesta: Duda estructuras anidadas (Sencillo)

Hola

Tienes que declarar asignaturas, antes que alumnos, porque la estás utilizando dentro de la struct alumnos:

Código:
struct asignaturas
{
	char nombre[40];
	float notas[3];
};

struct alumnos
{
	char nombre[50];
	char apellidos[60];
	char dni[10];
	int edad;
	struct asignaturas asignatura[8]; 
};
Saludos
  #3 (permalink)  
Antiguo 06/09/2014, 12:18
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: Duda estructuras anidadas (Sencillo)

Hola picman.

Es un problema de ámbito, la structura asignaturas debería estar declarada antes de la structura alumnos.
Código C:
Ver original
  1. #include <stdio.h>
  2. #define TAM 2
  3.  
  4. struct asignaturas {
  5.   char nombre[40];
  6.   float notas[3];
  7. };
  8.  
  9. struct alumnos {
  10.   char nombre[50];
  11.   char apellidos[60];
  12.   char dni[10];
  13.   int edad;
  14.   struct asignaturas asignatura[8];
  15. };
  16. ...

Saludos.
  #4 (permalink)  
Antiguo 06/09/2014, 12:19
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: Duda estructuras anidadas (Sencillo)

Hola jc_moj.

Disculpas, no ví tu mensaje mientras escribía este.

Saludos.
  #5 (permalink)  
Antiguo 06/09/2014, 12:23
Avatar de jc_moj  
Fecha de Ingreso: septiembre-2009
Ubicación: Andalucía
Mensajes: 137
Antigüedad: 14 años, 7 meses
Puntos: 12
Respuesta: Duda estructuras anidadas (Sencillo)

Cita:
Iniciado por ecfisa Ver Mensaje
Hola jc_moj.

Disculpas, no ví tu mensaje mientras escribía este.

Saludos.
Nada, no tienes que disculparte, prácticamente lo escribimos a la vez y el mio salió antes por poco.

Un saludo
  #6 (permalink)  
Antiguo 06/09/2014, 12:50
 
Fecha de Ingreso: julio-2013
Mensajes: 11
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Duda estructuras anidadas (Sencillo)

Joer!

Y mira que es de lógica, al ser C programación estructurada obviamente tendré que declararlo antes si no no la reconocerá.

Muchas gracias a los dos!! =)

Etiquetas: anidadas, ejemplo, estructuras, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:13.