PDA

View Full Version : Percentuale di avanzamento


3nigma666
02-03-2005, 13:32
salve io voglio implementare in un codice ke esegue l'ordinamento di piu vettori un contatore ke scrive a schermo (sulla schell sia di win ke linux) la percentuale di avanzamento dell'ordinamento.Vi spiego un attimo come lo vorrei ideare.
Il programma prende in input un vettore e lo ordina n volte e ne calcola il tempo di ordinamento facendo una somma su tutti i tempi ottenuti nelle ripetizioni / ripetizioni.Io vorrei prendere queste n ripetizioni ed eseguire la proporzione :

100% : n = 1% : x

dove x sono il numeri di ripetizioni necessarie per eseguire l' 1 %.

e fin qui nessun problema,basta inizializzare un contatore count ke quando arriva alla dimensine count = x incrementa di 1 la percentuale eseguita.
il problema è comunicarli a schermo in quanto

mi troveri con un output del genere :

shell :
-----------------------------------------------------------------
|
| 1.ordinare un vettore di 10 elementi
| 2.ordinare un vettore di 100 elementi
| 3.ordinare un vettore di 1000 elementi
| 4.ordinare un vettore di 5000 elementi
|
|tempo necesario per ordinare un vettore di 10 elementi 0.200 sec
|
|tempo necessario per ordinare un vettore di 100 elementi 0.450 sec
|percentuale eseguita: 49%
|
|
|
|--------------------------------------------------------------------------

ora come ora pero avrei due metodi:

o farsi ke la shell si comporti in questa maniera:

|
|percentuale eseguita: 49%
|percentuale eseguita: 50%
|percentuale eseguita: 51%
|percentuale eseguita: 52%
| ecc
|
|
|


o altrimenti pulire lo schermo ogni volta ke si aggiorna la percentuale,solo ke cosi perdo le informazioni precedenti relative ai tempi ottenuti in precedenza :


|tempo necessario ad ordinare un vettore di 10 elementi 0.400 sec
|
|tempo necessario ad ordinare un vettore di 100 elementi 0.450 sec

è vero ke tutti questi numeri li salvo gia su file e ke potrei richiarmarli da file ogni volta ke aggiorno la percentuale,solo ke cosi appesantire notevolmente il codice e l esecuzione, ke gia dura dalle 12 alle 24 ore per eseguire tutti gli ordinamenti con tutti gli algoritmi di ordinamento contemplati dal codice
Non c'è una procedura ke permette di dividere in zone lo schermo della shell e gestire indipendemente gli output??

help please... ke se riesco ad implementare questo,il 30 e lode non me lo toglie nessuno e vi offro una birra a tutti (VIRTUALE :D )

grazie :D

cionci
02-03-2005, 15:16
Puoi accedere o direttametne al buffer della memoria video (cosa improponibile su un eseguibile Windows a 32 bit) o, almeno sotto Windows, puoi usare le API... Ti puoi spostare all'inzio della riga che vuoi modificare con questa funzione:

BOOL SetConsoleCursorPosition(
HANDLE hConsoleOutput,
COORD dwCursorPosition
);

tglman
02-03-2005, 19:58
Semplicemente cancelli la percentuale e la ristampi, in c il back space dorebbe essere '\b' ma non sono sicuro, questo protebbe provocare un po di sfarfallio della percentuale, quando la ristampi....

3nigma666
03-03-2005, 08:51
fantastica questa cosa la provo subito...

mpattera
03-03-2005, 20:57
ma sei in modalità testo? nel boland c'era la gotoxy() per posizionarsi e poi sovrascrivere. cmq sfarfalla sì..