Inicio > Programación > C/C++: Indicador de progeso

C/C++: Indicador de progeso

Martes, 10 de noviembre de 2009 piponazo Dejar un comentario Ir a comentarios

cpp logoA muchos os parecerá una tontería de entrada, pero si supieseis el tiempo que llevo diciendo: “a ver si un día de estos averiguo como programar un indicador de progreso para mis aplicaciones C++ …  :ZZZ: “, y hoy me ha dado por averiguarlo :victory:.  A continuación os muestro el código y os lo explico brevemente ya que tampoco tiene mucho misterio una vez que te pones con ello.

// ================================================================
//
//       Filename:  percentage.cpp
//
//    Description:
//
//        Version:  1.0
//        Created:  10/11/09 11:51:42
//       Revision:  none
//       Compiler:  g++
//
//         Author:  piponazo (piponazo@plagatux.es)
//        Company:  http://plagatux.es
//
// ================================================================

#include    <iostream>
#include    <cstdlib>
#include    <ctime>

using namespace std;

// ===  FUNCTION  ====================================================
//         Name:  main
//  Description:
// ===============================================================
int main ()
{
   try
   {
      unsigned int operations = 500;
      float inc = 100.0f / (static_cast<float>(operations)-1.0);
      float progress = 0.0f;
      for (unsigned int i=0; i<operations; i++)
      {
         usleep(10000);
         progress+=inc;
         cout << "Progress: " << static_cast<unsigned int>(progress)
                 << "%\r" << flush;
      }
   cout << endl;
   }
   catch (exception &ex)
   {
      cout << ex.what() << endl;
   }
   return EXIT_SUCCESS;
}

Lo más importante lo podemos encontrar en la línea 39. \r es un caracter de escape que nos permite posicionar el cursor al principio de la línea, mientras flush nos permite sincronizar el buffer asociado a un stream. En cristiano, que nos muestra lo que queremos mostrar sin que haya que introducir un retorno de carro. El resto es simplemente para que veáis en funcionamiento un ejemplo. En la línea 36 nos encontramos con la función usleep que nos permite dormir el proceso X microsegundos, mientras que en la línea 32 calculo en cuanto se incrementa la variable de progreso en cada operación.

GD Star Rating
loading...
C/C++: Indicador de progeso, 9.8 out of 10 based on 4 ratings
  • Share/Bookmark
Categories: Programación Tags: ,
  1. Martes, 10 de noviembre de 2009 a las 15:06 | #1
    GD Star Rating
    loading...

    De tontería nada ;) Muy útil! Gracias.

  2. Martes, 10 de noviembre de 2009 a las 16:00 | #2
    GD Star Rating
    loading...

    Jeje si no os parece tontería pues mejor :nerd:.

  1. Miércoles, 18 de noviembre de 2009 a las 15:52 | #1
  2. Jueves, 19 de noviembre de 2009 a las 20:02 | #2