Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/12/2005, 17:13
Avatar de El_Metallick
El_Metallick
 
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!!