PDA

Visualizza la versione completa : [C] Funzioni per il tempo


sky_451
18-12-2004, 11:27
Salve,

ho bisogno di un aiuto per l'utilizzo delle funzioni della libreria time.h. Nel mio programma devo tenere conto del tempo impiegato dall'utente per fare un input. Ho provato con la funzione time() salvando il tempo iniziale, quello finale e facendo la differenza con difftime(). Il problema che, in questo modo, ottengo solamente il valore in secondi senza, per, alcun decimale. (es. 1.0000 e non 1.2345). Come posso risolvere?

Grazie a tutti per l'aiuto.

Ilmalcom
18-12-2004, 11:31
Originariamente inviato da sky_451
Salve,

ho bisogno di un aiuto per l'utilizzo delle funzioni della libreria time.h. Nel mio programma devo tenere conto del tempo impiegato dall'utente per fare un input. Ho provato con la funzione time() salvando il tempo iniziale, quello finale e facendo la differenza con difftime(). Il problema che, in questo modo, ottengo solamente il valore in secondi senza, per, alcun decimale. (es. 1.0000 e non 1.2345). Come posso risolvere?

Grazie a tutti per l'aiuto.
difftime ritorna un double, quindi suppongo tu possa specificarne la precisione mediante un opportuno carattere di conversione su printf

sky_451
18-12-2004, 11:49
Si torna un double. Il problema che mi ritorna sempre un valore intero di secondi, anche se metto una precisione molto lunga.
(es. 2.0000000000000000). :dh:

Ilmalcom
18-12-2004, 11:55
Originariamente inviato da sky_451
Si torna un double. Il problema che mi ritorna sempre un valore intero di secondi, anche se metto una precisione molto lunga.
(es. 2.0000000000000000). :dh:
Svelato l'arcano... La "colpa" di time, perch restituisce il tempo espresso in secondi, percui evidentemente la differenza deve essere un numero intero. Purtroppo per non conosco alternative a time, percui lascio la palla :)

sky_451
18-12-2004, 11:58
Grazie sei stato molto gentile. Intanto spero in qualche altra anima buona.

pprllo
18-12-2004, 11:58
Difftime HA una precisione in secondi perch time_t un tipo che esprime un valore in secondi. Devi invece usare la funzione clock(), in questo modo:


clock_t start, elaps_time;
start = clock();
//Input
elaps_time = (clock() - start) / CLK_TCK;
//Ora elaps_time contiene il tempo impiegato in secondi con una precisione al millesimo


Bye

P.S.: Dimenticavo: clock() una funzione di time e CLK_TCK una costante di time. clock() restituisce i cicli di CPU trascorsi dall'inizio del processo. CLK_TCK esprime il rapporto cicli_cpu/secondi

sky_451
18-12-2004, 12:04
Grazie provo subito come mi hai detto.

:)

sky_451
18-12-2004, 12:18
Scusa la domanda scema. Ma per stampare elapsetime? che carattere di conversione uso nel printf? O devo prima salvare il suo valore in una variabile double?

pprllo
18-12-2004, 12:21
Stampalo come double o come float.

sky_451
18-12-2004, 12:23
ok mi sei stato di grande aiuto. grazie.

:ciauz:

Loading