elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema con if
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con if  (Leído 1,617 veces)
d91

Desconectado Desconectado

Mensajes: 165


Ver Perfil
problema con if
« en: 23 Octubre 2015, 03:26 am »

hola a todos, tengo una lista doblemente enlazada con nodos con una variable llamado "verificado" y siempre que sea su valor sea 1 de esta variable deberá entrar al if hasta que en algún momento sea 0, en un momento dado tengo un proceso mayor al quantum y la variable se pone en 1 y aumenta la bandera, el bucle se queda infinito al hacer una segunda comprobación de la lista porque todos aparecen con verificado = 0, y ya no puedo entrar a restar la bandera, no se si el error esta al poner la lista nuevamente al primer nodo
Código
  1. void SchedulerRoundRobin(Tlista &lista){
  2.  
  3.  OrdenarTiempoLlegada(lista);
  4.  
  5.  Tlista aux, tempLista;
  6.  
  7.  cont = 0;
  8.  
  9.   aux = lista;
  10.  
  11.   bandera = 0;
  12.  
  13.   do{
  14.  
  15.             while(lista != NULL){
  16.  
  17.  
  18.                    if(lista->CPUaux > quantum ){
  19.  
  20.                         cont = cont + quantum;
  21.  
  22.                           bandera = bandera + 1;
  23.  
  24.                              lista->verificado = 1;
  25.  
  26.  
  27.                              tempLista = lista->anterior; //adjudicando listatemporal
  28.  
  29.                             lista->espera = lista->espera + tempLista->enEjecutarse;
  30.  
  31.                              lista->CPUaux = lista->CPUaux - quantum;//aqui resto y al segundo recorrido
  32.  
  33.                              lista = lista->sgte;//el proceso ya no entrara
  34.  
  35.  
  36.                        }//if del quantum//aqui porque sera menor al quantum;
  37.  
  38.  
  39.                        else if(lista->verificado != 0){
  40.  
  41.                             if(lista->espera != 0){
  42.  
  43.                             bandera = bandera - 1;
  44.  
  45.                             }//if aux->espera
  46.  
  47.                             cont = cont + lista->CPUaux;
  48.  
  49.                             lista->verificado = 0;
  50.  
  51.  
  52.                             lista->enEjecutarse = cont;
  53.  
  54.                             if(lista->anterior != NULL){
  55.  
  56.                             tempLista = lista->anterior; //adjudicando listaTemporal
  57.  
  58.                             lista->espera = lista->espera + tempLista->enEjecutarse;
  59.  
  60.                             }//if != NULL
  61.                             else{
  62.  
  63.                             lista->espera = 0;
  64.  
  65.                             }//else
  66.  
  67.                             lista = lista->sgte;
  68.  
  69.                        }//else if
  70.  
  71.               }//while secundario
  72.  
  73.               lista = aux;//reiniciando la lista al primer nodo
  74.  
  75.  
  76.      }while(bandera > 0);//while principal
  77.  
  78.  
  79. }//calendarizacion turno circular
  80.  
  81.  
  82.  


« Última modificación: 23 Octubre 2015, 04:45 am por d91 » En línea

soyloqbuskas

Desconectado Desconectado

Mensajes: 218


¡El conocimiento es de todos!


Ver Perfil
Re: problema con if
« Respuesta #1 en: 23 Octubre 2015, 06:23 am »

¡ Buenas d91 !

EL problema del bucle infinito creo que lo tienes en la linea 15
Citar
while(lista != NULL){
Para salir de ese bucle necesitas que en algun momento la variable lista sea igual a null y eso nunca ocurre, al final pones lista=aux; pero aux no esta inicializado a null asi que nunca salimos del bucle.

un saludo.


En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
d91

Desconectado Desconectado

Mensajes: 165


Ver Perfil
Re: problema con if
« Respuesta #2 en: 23 Octubre 2015, 17:45 pm »

la salida de ese bucle esta asegurado  en la línea 67, el problema lo tengo que al salir y la bandera vale 1 debe volver a recorrer la lista para ese entonces  el nodo valdra menos que el quantum y debería traer un 1 en la variable verificado y entrar en el siguiente if pero no lo hace y entonces se queda enciclado.
En línea

d91

Desconectado Desconectado

Mensajes: 165


Ver Perfil
Re: problema con if
« Respuesta #3 en: 23 Octubre 2015, 18:36 pm »

hacer uso del turbo debugger quiere un poco de paciencia, pero al fin encontré el error, teniendo if anidados si en algún momento no entra en ninguno de los dos debe haber un else para adelantar la lista, o sea en teoría en el segundo recorrido estaba comparando el mismo nodo todas las veces y por eso quedaba enciclado
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema BlueZScanner y problema de conexión
Hacking Mobile
Kasswed 3 6,318 Último mensaje 6 Mayo 2006, 22:04 pm
por Gospel
[Duda y problema] Tengo un problema « 1 2 »
Windows
Killer2812 16 13,987 Último mensaje 26 Marzo 2015, 06:21 am
por scott_
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines