Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sprblk en 25 Mayo 2012, 03:53 am



Título: Cola con prioridades
Publicado por: sprblk en 25 Mayo 2012, 03:53 am
Hola muchos saludos soy nuevo por aqui y me gustaria que me pudieran ayudar como pueden ver por el titulo se trata de una cola con prioridades donde el de mayor prioridad sale primero, pero este programa tiene una variante y es que la forma de atender tiene que ir variando osea perimero tiene que atender al de mayor prioridad que en este caso es 3 y al ultimo al de menor prioridad que es 1, pero para que no solo atienda a los de mayor prioridad debe de atender uno de mayor prioridad despues uno de prioridad media y al ultimo al de menor prioridad y si existen mas datos volver a empezar con el de prioridad 3 y si ya no existe uno de prioridad 3 seguir con el de prioridad 2 y asi sucesivamente asta que se vacie la cola espero me haya podido explicar aqui les dejo el codigo que se que esta mal y me gustaria que me corrigieran en muchos de esos errores espero poder contar con su ayuda y de antemano gracias.

Tengo una clase llama cl y en ella declare un arreglo de tipo estructura llamado A[mx] donde solo almacena dos datos un nombre y su priridad  la cual es mas importante para este metodo llamado aten( ) , tiene su contador c y una variable llamada tt que es como otro contador para ser comparado con la prioridad la cual esta inicializada en la clase con valor de 3 y es la que llevara el contro de que dato es el siguiente en ser atendido.

Código
  1.  
  2. void cl::aten(){
  3.  
  4.     for(int i=0;i<c;i++){
  5.     if(A[i].prio == tt){
  6.      for (int i = 0; i < c - 1; i++)
  7.         A[i] = A[i+1];
  8.  
  9.          cout<<"\nDato atendido "<<endl;
  10.       c--;
  11.                  }
  12.     else if(A[i].prio == tt){
  13.        for (int i = 0; i < c - 1; i++)
  14.         A[i] = A[i+1];
  15.  
  16.            cout<<"\nDato atendido "<<endl;
  17.        c--;
  18.                  }
  19.     else if(A[i].prio == tt){
  20.        for (int i = 0; i < c - 1; i++)
  21.         A[i] = A[i+1];
  22.  
  23.              cout<<"\nDato atendido "<<endl;
  24.            c--;  
  25.                  }
  26.     }
  27.         --tt; // la variable tt disminuye en una unidad
  28.  
  29.     if(tt == 0){ tt = 3; }  // cuando tt valga cero  tomara el valor de 3        
  30.     }
  31.  
  32.  
  33.