[C/C++]Progress Bar

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
 
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
 
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:
Back
Topo