Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con memoria en eplicacion en C

Estas en el tema de Problema con memoria en eplicacion en C en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 31/12/2005, 17:13
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 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!!
  #2 (permalink)  
Antiguo 01/01/2006, 16:06
Usuario baneado!
 
Fecha de Ingreso: febrero-2005
Mensajes: 116
Antigüedad: 19 años, 2 meses
Puntos: 0
Aisla el error un poco...
  #3 (permalink)  
Antiguo 01/01/2006, 16:54
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
es que no se donde esta... osea no se si no me los ingresa (yo creo que si porque si no me daria error al escribir en la memoria no al leer) o si al desplegar...
__________________
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!!
  #4 (permalink)  
Antiguo 02/01/2006, 13:24
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
el error es en tiempo de ejecucion o en tiempo de compilacion?
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #5 (permalink)  
Antiguo 02/01/2006, 13:25
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
por lo que dices, es en tiempo de ejecucion.
¿Por que no haces un debug de la aplicacion y sigues paso a paso lo que hace tu programa hasta en contrar donde esta el error?
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #6 (permalink)  
Antiguo 02/01/2006, 16:40
Usuario baneado!
 
Fecha de Ingreso: febrero-2005
Mensajes: 116
Antigüedad: 19 años, 2 meses
Puntos: 0
Cita:
Iniciado por TolaWare
por lo que dices, es en tiempo de ejecucion.
¿Por que no haces un debug de la aplicacion y sigues paso a paso lo que hace tu programa hasta en contrar donde esta el error?
Ya le dije que aislase el error... ;)
  #7 (permalink)  
Antiguo 02/01/2006, 16:41
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
bueno, no es pa que te enojes. PERDON
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #8 (permalink)  
Antiguo 02/01/2006, 16:42
Usuario baneado!
 
Fecha de Ingreso: febrero-2005
Mensajes: 116
Antigüedad: 19 años, 2 meses
Puntos: 0
Cita:
Iniciado por TolaWare
bueno, no es pa que te enojes. PERDON
No me he enojado... Puse un guiño para denotar la diferencia.
  #9 (permalink)  
Antiguo 02/01/2006, 19:34
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
jajajajaj si la verda de las cosas es que lo hice muchas veces... pero en DEV C++ me daba error al final lo compile en Visual c++ y no me dio error :S... porque sera eso??? de todas formas gracias por la ayuda
__________________
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!!
  #10 (permalink)  
Antiguo 02/01/2006, 20:38
Usuario baneado!
 
Fecha de Ingreso: febrero-2005
Mensajes: 116
Antigüedad: 19 años, 2 meses
Puntos: 0
Cita:
Iniciado por El_Metallick
jajajajaj si la verda de las cosas es que lo hice muchas veces... pero en DEV C++ me daba error al final lo compile en Visual c++ y no me dio error :S... porque sera eso??? de todas formas gracias por la ayuda
Porque hay un error ;)

Debería no dar error la aplicación compilada con Dev-C++. Aunque funcione usando Visual C++, te estás colando en algún sitio (aunque parezca que el programa funciona, no lo está haciendo, debuggea la memoria).

Que un programa no falle no quiere decir que esté haciendo lo que debe ;)
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 02:58.