/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problema al introducir o libera ... [SOLUCIONADO]

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
brygar



Registrado: 28 Jul 2006
Mensajes: 28

MensajePublicado: 30/08/2006 10:04 am
Título: Problema al introducir o libera ... [SOLUCIONADO]

Os dejo las funciones para introducir y liberar elementos de una cola para ver si me podeis decir que puede fallar, el problema creo que es a la hora de liberar porque introducir los elementos los introduce o al menos los primeros. Se trata de un array de punteros y cada puntero apunta a una cola, o eso pretendo.

La funcion que introduce elementos es:
Código:
COLA* intro(COLA **v, int i, LLAMADA *llam, int j, int k, int ops)
{
     int m[ops];
     COLA *cab = v[i];
     
     if ( v[i]== NULL)
      {
            v[i]=(COLA *) malloc (sizeof(COLA));
            if(v[i] == NULL){
                    printf("Error 8: error en la reserva dinámica de memoria");
                            getchar();
                            exit(1);
                            }
            v[i]->sig = NULL;
            v[i]->tDur = llam[j].dur;
            v[i]->tEnt = k;
            v[i]->tEsp = k - llam[j].ent;
            v[i]->oper = i;
            v[i]->tFin = k + v[i]->tDur;
            m[i] = v[i]->tFin;
            return (v[i]);
      }
      else
      {
            while ( v[i]->sig != NULL)
            {
                        v[i]=v[i]->sig;
            }
            v[i]->sig = (COLA *) malloc (sizeof(COLA));
            if(v[i]->sig == NULL){
                    printf("Error 8: error en la reserva dinámica de memoria");
                            getchar();
                            exit(1);
                           }
            v[i] = v[i]->sig;
            v[i]->sig = NULL;
            v[i]->tDur = llam[j].dur;
            v[i]->tEnt = k;
            v[i]->tEsp = k - llam[j].ent;
            v[i]->oper = i;
            v[i]->tFin = m[i] + v[i]->tDur;
            m[i] = v[i]->tFin;
            return (cab);
       } 
           
 }


Y la funcion que libera es:
Código:
COLA* libera(COLA **v, int k, int ops, int in)
{
   
       int w = 0;
       COLA *aux;
       FILE* salida;
       while ( w < ops )
       {   
         if (v[w]!= NULL)
         {
         salida = fopen("salida.txt", "a");
         if(salida == NULL)
            {
             printf("Error 6: no se puede escribir en el fichero de salida");
             exit(1);
            }

         if (v[w]->tFin == k)
            {
               
               v[w]->Evento = 'F';
               fprintf(salida, "%c\t%d\t%d\t%d\t%d\n", v[w]->Evento, v[w]->tFin, (v[w]->oper + 1), v[w]->tEnt, v[w]->tEsp);
               fseek(salida,0,2);
               if (fclose(salida)!=0)
                  {
                    printf( "Problemas al cerrar el fichero\n" );
                  }
               aux = v[w]->sig;             
               in--;
            }
         }     
     w++;
     }       
   return aux;
}
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com