
31/12/2005, 17:13
|
 | | | Fecha de Ingreso: noviembre-2002 Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 22 años, 3 meses Puntos: 16 | |
Problema con memoria en eplicacion en C 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
__________________ Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |