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

[SOLUCIONADO] Programa con estructura en C

Estas en el tema de Programa con estructura en C en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/12/2014, 15:53
 
Fecha de Ingreso: diciembre-2014
Mensajes: 2
Antigüedad: 9 años, 5 meses
Puntos: 0
Pregunta Programa con estructura en C

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},{"di bujo",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.
  #2 (permalink)  
Antiguo 02/12/2014, 20:31
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Programa con estructura en C

1º error esta en la linea de la declaracion de la funcion verDatos: void verDatos ( struct lista la, char *cdni ); que esta mas o menos en la 3º linea. Estas esperando un objeto del tipo struct lista. Como bien sabemos en c para poder hacer uso de un objeto del tipo que sea, ese objeto debe haber sido declarado anteriormente.
El primer problema se resuelve al mover la declaracion void verDatos ( struct lista la, char *cdni ); justo despues de haber creado la estructura lista.

Puedes poner la declaracion void verDatos ( struct lista la, char *cdni ); justo antes de main, y ya te funciona por que a esa altura si ya esta declarada la estructura lista:
void verDatos ( struct lista la, char *cdni );
int main ( int argc, char** argv ) {
//blablablalal...
}

2º-El error que veo, es en esta linea: if ( strcmp ( la.listadoAlumnos.dni, cdni ) == 0 ) { ...Dentro de la implementación de la función antes mensionada (void verDatos ( struct lista la, char *cdni )). Intentas hacer una comparacion de la.listadoAlumnos.dni con cdni, pero listadoAlumnos es un arreglo, y esta declarado como struct alumno listadoAlumnos[100], dentro de la clase lista.

Asi que la comparacion correcta es struct alumno strcmp ( la.listadoAlumnos[?].dni, cdni) donde ? es uno de los 100 valores que has declarado.

alumno strcmp ( la.listadoAlumnos.dni, cdni)
alumno strcmp ( la.listadoAlumnos[?].dni, cdni)

¿ves la diferencia? Tienes 100 variables listadoAlumnos y debes indicar a cual quieres comparar con cdni.

3º-Luego mas abajo en ese mismo if tienes el mismo error for ( j = 0; j < la.listadoAlumnos.nsignaturas; j++ ) {
Es for ( j = 0; j < la.listadoAlumnos[???].nsignaturas; j++ ) {

Es lo que vi. Espero que te sirva de ayuda =).

Edit
Las estructuras estan muy poco claras.
Miere eso:
Código C:
Ver original
  1. struct lista listaAdmitidos = {
  2.     {
  3.         {"juan"   , "334g", {{"física", 6}}, 1},
  4.         {"maria"  , "445h", {{"fisica", 2} , {"fundamentos1", 6}}, 2},
  5.         {"luis"   , "145g", {{"fisica", 6}}, 1},
  6.         {"pedro"  , "678p", {{"fisica", 3}}, 1},
  7.         {"lorena" , "745h", {{"fisica", 6} , {"fundamentos1", 6}} , 2},
  8.         {"pascual", "554g", {{"fisica", 6} , {"calculo", 6}, {"di bujo", 9}}, 3},
  9.     },
  10.     6
  11. };
Me duele la cabeza al ver semejante raleo.¿Eso funciona? XDD

Última edición por vangodp; 02/12/2014 a las 20:37
  #3 (permalink)  
Antiguo 03/12/2014, 02:17
 
Fecha de Ingreso: diciembre-2014
Mensajes: 2
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Programa con estructura en C

Muchísimas gracias vangodp. Has solventado todos los problemas y por sorpresa sí, funciona jajajaja, yo tampoco me esparaba que funcionara pero lo hace. Muchas gracias por todas las aclaraciones!!!!

Etiquetas: char, estructura, int, numero, programa
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 18:27.