Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: piete2 en 2 Diciembre 2014, 22:29 pm



Título: Ayuda Programa con estructuras C
Publicado por: piete2 en 2 Diciembre 2014, 22:29 pm
Hola, quisiera saber si alguno me hace el favor de decirme en qué me he equivocado porque me estoy volviendo loco y no encuentro el motivo. El ejercicio es el siguiente:

Escribe un subprograma que muestre las asignaturas en las que se encuentra matriculado un alumno, al subprograma se le pasará como parámetro la lista de alumnos, y el dni del alumno del que se quiere mostrar sus datos. Escribe un ejemplo de llamada.

Bien, yo he hecho lo siguiente:

#include <stdio.h>
#include <stdlib.h>
void verDatos(struct lista la, char *cdni);

struct asignatura{
    char nombre[30];
    int creditos;
};
struct alumno{
    char nombre [30];
    char dni[10];
    struct asignatura matricula[12];
    int nsignaturas;
};
struct lista{
    struct alumno listadoAlumnos[100];
    int numero_real;
};
struct informe{
    int creditosTotales;
    int nalumnos;
};
struct lista listaAdmitidos={
    {
        {"juan","334g",{{"física",6}},1},
        {"maria","445h",{{"fisica",2},{"fundamentos1",6}},2},
        {"luis","145g",{{"fisica",6}},1},
        {"pedro","678p",{{"fisica",3}},1},
        {"lorena","745h",{{"fisica",6},{"fundamentos1",6}},2},
        {"pascual","554g",{{"fisica",6},{"calculo",6},{"dibujo",9}},3},        
    },
    6
};

int main(int argc, char** argv) {

  
}
void verDatos(struct lista la, char *cdni){
    int i,j;
    for(i=0;i<la.numero_real;i++){
        if(strcmp(la.listadoAlumnos.dni,cdni)==0){
            for(j=0;j<la.listadoAlumnos.nsignaturas;j++){
                printf("Asignatura: %s\n",la.listadoAlumnos.matricula[j].nombre);
            }
        }
            
    }
  
    
      
}

Me da error en el subprograma como conflicto en verDatos.

Muchas gracias de antemano por leer tanto rollo.


Título: Re: Ayuda Programa con estructuras C
Publicado por: rir3760 en 3 Diciembre 2014, 02:58 am
Cuando publiques código fuente por favor utiliza las etiquetas de código. Estas se agregan mediante el cuadro desplegable con el texto "GeSHi" en la pagina de composición de mensajes, solo tienes que seleccionar ahí el lenguaje (C, C++, etc.).

----

El error que comentas sucede porque declaras la funcion "VerDatos" antes que el tipo "struct lista", para solucionarlo debes declarar primero todos los tipos que necesitas en el programa y solo despues las declaraciones y definiciones de las funciones.

Tambien debes incluir el encabezado <string.h> antes de cualquier uso de la funcion strcmp.

Un saludo