C/Visual C - Problemas de memoria

 
Vista:

Problemas de memoria

Publicado por El_Metallick (2 intervenciones) el 01/01/2006 15:51:47
Hola maestros... la verdad de las cosas es que ya no se que mas hacer para que esto me funcione... les cuento tengo 2 estructuras anidadas una de un ramo y otra de alumnos, la cosa es que puedo ingresar y ver ramos pero no alumnos (y para ingresar y desplegar alumnos lo hago = que para ingresar ramos y desplegarlos), toda la informacion la guardo en memoria, es decir cuando se sale de la aplicación se borra todo... bueno les dejo el código

Código:

typedef struct Alumno
{
char Nombres[50];
char Apellidos[50];
char RUT[9];
int Ingreso;
int Intentos;
int Controles1;
int Pep1;
int Controles2;
int Pep2;
int Controles3;
int Pep3;
float Promedio;
} Alumno;

typedef struct Ramo
{
char Nombre[50];
int total_alumnos;
Alumno Alumnos[50];

}Ramo;

int n_ramos;
int n_alumnos;
Ramo Depto[20];

void agregar_alumno(int numero,int n_alumnos)
{
int x;
system("cls");

printf("\nIngrese Nombres: ");
scanf("%s", Depto[numero].Alumnos[n_alumnos].Nombres);

printf("\nIngrese Apellidos: ");
scanf("%s", Depto[numero].Alumnos[n_alumnos].Apellidos);

printf("\nIngrese RUT: ");
scanf("%s", Depto[numero].Alumnos[n_alumnos].RUT);

printf("\nIngrese a%co de ingreso: ", 164);
scanf("%d",&x);
Depto[numero].Alumnos[n_alumnos].Ingreso=x;

printf("\nIngrese cuantas veces ha hecho el ramo: ");
scanf("%d",&x);
Depto[numero].Alumnos[n_alumnos].Intentos=x;

printf("\nIngrese promedio controles para la PEP1: ");
scanf("%d", &x);
Depto[numero].Alumnos[n_alumnos].Controles1=x;

printf("\nIngrese la nota de la PEP1: ");
scanf("%d",&x);
Depto[numero].Alumnos[n_alumnos].Pep1=x;

printf("\nIngrese promedio controles para la PEP2: ");
scanf("%d",&x);
Depto[numero].Alumnos[n_alumnos].Controles2=x;

printf("\nIngrese la nota de la PEP2: ");
scanf("%d", &x);
Depto[numero].Alumnos[n_alumnos].Pep2=x;;

printf("\nIngrese promedio controles para la PEP3: ");
scanf("%d", &x);
Depto[numero].Alumnos[n_alumnos].Controles3=x;

printf("\nIngrese la nota de la PEP3: ");
scanf("%d",&x);
Depto[numero].Alumnos[n_alumnos].Pep3=x;

Depto[numero].Alumnos[n_alumnos].Promedio=((((0.2*Depto[numero].Alumnos[n_alumnos].Controles1)
+(0.8*Depto[numero].Alumnos[n_alumnos].Pep1))
+((0.2*Depto[numero].Alumnos[n_alumnos].Controles2)
+(0.8*Depto[numero].Alumnos[n_alumnos].Pep2))
+((0.2*Depto[numero].Alumnos[n_alumnos].Controles3)
+(0.8*Depto[numero].Alumnos[n_alumnos].Pep3)))/3);

}

void ver_lista_ramo(int n)
{
int i;

printf("Apellidos\t");
printf("Nombres\t");
printf("RUT\t");
printf("A%co de Ingreso\t", 164);
printf("Intentos\t");
printf("Nota 1\t");
printf("Nota 2\t");
printf("Nota 3\t");
printf("Promedio");
printf("\n");

for(i=0;i<Depto[n].total_alumnos;i++)
{
float nota1 = ((0.2 * Depto[n].Alumnos[i].Controles1) + (0.8 * Depto[n].Alumnos[i].Pep1));
float nota2 = ((0.2 * Depto[n].Alumnos[i].Controles2) + (0.8 * Depto[n].Alumnos[i].Pep2));
float nota3 = ((0.2 * Depto[n].Alumnos[i].Controles3) + (0.8 * Depto[n].Alumnos[i].Pep3));

printf("%s %s\t", Depto[n].Alumnos[i].Apellidos);
printf("%s %s\t", Depto[n].Alumnos[i].Nombres);
printf("%s\t", Depto[n].Alumnos[i].RUT);
printf("%d\t", Depto[n].Alumnos[i].Ingreso);
printf("%d\t", Depto[n].Alumnos[i].Intentos);
printf("%2.1f\t", nota1);
printf("%2.1f\t", nota2);
printf("%2.1f\t", nota3);
printf("%2.1f\t", Depto[n].Alumnos[i].Promedio);
printf("\n");
}
getchar();
}

Ahora no se si el error esta al ingresar el alumno o al desplegarlo de todas formas les dejo el archivo c completo http://e.1asphost.com/info2005/Lab2.c

Saludos y gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas de memoria

Publicado por Blaine (1 intervención) el 02/01/2006 16:28:52
Buenas:

Así a simple vista he visto que la variable total_alumnos no lo incrementas en ningún lado. Mira a ver si es eso.

Saludos,
-Blaine-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas de memoria

Publicado por El_Metallick (2 intervenciones) el 03/01/2006 02:16:33
La verdad de las cosas es que el problema se soluciono al cambiar de compilador... estaba trabajando con el dev c++ y al final compile con el visual studio y me funciono perfecto.... no se que habra sido pero weno sera un misterio mas de wintendo ^^... saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar