SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: nix2008 en Martes 3 de Marzo de 2009, 16:04

Título: Recorrer una lista
Publicado por: nix2008 en Martes 3 de Marzo de 2009, 16:04
Buenas tardes,
No se si alguien me podra ayudar con un pequeño problema que no consigo resolver, se trata de una lista de enteros (Datos_List) de la que necesito que cada 10 segundos este mostrando un elemento de la lista, empezando por el primer elemento introducido y que luego visualice el siguiente hasta recorrer la totalidad de la lista.
Estoy trabajando sobre este código pero no obtengo lo que necesito:

....
dato.initTimer += timer; //Contador de tiempo ya implementado

if (dato.initTimer > 10)
{
  dato.initTimer =0;

  if(!Datos_List.empty())
  {
    list<int>::iterator pos;
    pos = Datos_List.bein();

    while(pos != Datos_List.end())
    {
      printf("n%i", *pos);
      pos++;
    }
  }
}


MUCHAS GRACIAS por adelantado
Título: Re: Recorrer una lista
Publicado por: Eternal Idol en Martes 3 de Marzo de 2009, 16:12
Si estas poniendo begin correctamente no se cual es el problema ... depuralo, usando esto me va sin problemas:

Código: Text
  1. #include <list>
  2. #include <stdio.h>
  3.  
  4. using namespace std;
  5.  
  6. void main()
  7. {
  8.   list<int> Datos_List;
  9.   Datos_List.push_back(7);
  10.   Datos_List.push_back(9);
  11.   Datos_List.push_back(12);
  12.  
  13.   if(!Datos_List.empty())
  14.   {
  15.     list<int>::iterator pos;
  16.     pos = Datos_List.begin();
  17.     while(pos != Datos_List.end())
  18.     {
  19.       printf("n%i", *pos);
  20.       pos++;
  21.     }
  22.   }
  23. }
  24.  
Título: Re: Recorrer una lista
Publicado por: nix2008 en Martes 3 de Marzo de 2009, 16:27
Muchas gracias por tu contestación Eternal Idol; pero al ejecutar el codigo que escribiste y no esta haciendo lo que necesito, no me muestra un valor cada diez segundos, sino que cada diez segundos me muestra todo lo que tiene la lista.
Yo lo que necesito es que me muestre el primer elemento durante 10 segundos, durante los siguientes 10 segundos me muestre el segundo elemento y asi hasta alcanzar el final de la lista.
Habría alguna forma de conseguir lo que necesito???
Título: Re: Recorrer una lista
Publicado por: Eternal Idol en Martes 3 de Marzo de 2009, 16:51
Si la lista no cambia es muy simple, haces todo en un solo bucle y despues del pos++; pones Sleep(10000);.