1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[C/C++]Progress Bar

Discussão em 'Programação' iniciada por PJ, 8 de Setembro de 2006. (Respostas: 2; Visualizações: 1271)

  1. PJ

    PJ Power Member

    Boas. Estou aqui a fazer um programa, que depois irão ver o resultado, mas a questão que eu tenho é a seguinte :

    Eu quero introduzir uma progress bar, que deverá finalizar depois dos cálculos estarem todos efectuados. Nesses cálculos tenho dois ciclos for para os efectuar. Já experimentei meter antes dos ciclos com o código
    1.) ProgressBar1->StepBy(1); //vai de um em um, tal como os ciclos for
    ou
    2.) ProgressBar1->StepIt();

    Bem o que acontece é que com a 1ª hipótese ela vai nos 100% e os cálculos ainda não terminaram. Com a 2ª ela está sempre a encher. Isto com as instruções dentro do 1º ciclo for.

    i.e. :
    for(i=0;i<500;i++)
    {
    ProgressBar1->StepIt();
    for(j=0;j<500;j++)
    {
    instruções de cálculo
    }//fim 2ºciclo for
    mais instruções de cálculo
    }//fim 1º ciclo for

    Agora como posso eu fazer para a progress bar ir acompanhando os cálculos de forma a estar a 100% quando os cálculos terminarem?

    Obrigado pela ajuda
     
  2. CrazyBomber

    CrazyBomber Power Member

    Bem, eu não sei grande coisa em C++, mas não podes dizer quantos "steps" vais fazer?
    Tipo, o 1º ciclo faz 10 vezes, o segundo faz outras 10, logo tens 10 * 10 ciclos = 100 ciclos

    Portanto, punhas 100 steps na progress bar, e incrementavas depois do 2º ciclo, algo do género:

    Código:
    progressBar1->setSteps( 100 ); //não sei se isto se pode fazer :)
    for( ...; i < 10; ...) {
    ...
    for( ...; j < 10; ...) {
    ...
    ...
    progressBar1->stepIt();
    }
    ...
    }
    
    Há várias maneiras de fazer isto.
    No fundo, se souberes quantos ciclos vais fazer, é assim tão simples. Senão, tens de calcular quantos ciclos precisas de fazer e usar isso como variavel.

    Espero que sirva de alguma coisa :D
     
  3. PJ

    PJ Power Member

    Yep, ajudou bastante. Em primeiro faço ProgressBar1->StepBy(100/nºciclos) que é para ter o valor exacto do incremento e dentro do ciclo for o ProgressBar1->StepIt(); O problema é que ao efectuar 2.5 biliões de ciclos ( 50000 * 50000) isso vai ser uma infima parte mesmo. Vou tentar resolver.

    Obrigado :x2:
     
    Última edição: 8 de Setembro de 2006

Partilhar esta Página