•sori
Strain
Karma: 0
Deconectat
Mesaje: 12
|
|
« : Februarie 27, 2005, 15:24:33 » |
|
Ma poate invata cineva cum sa verific in cat timp imi ruleaza un program(cu precizie de trei zecimale). Am tot studiat time.h dar daca un program imi ruleaza in 0.1 imi afiseaza 0. !Folosesc Borland 3.1 / Devc++.[/b]
|
|
|
Memorat
|
|
|
|
•LordAnta
Strain
Karma: 2
Deconectat
Mesaje: 43
|
|
« Răspunde #1 : Februarie 27, 2005, 15:53:29 » |
|
incearca chestia urmatoare:
main() { long far *time(long far *)0x46c; long t=*time; printf("%.3f",(float)(*time-t)/(18)); return(0); }
E o chestie mai veche care face apel la locatia $0000:$046C , pe care unde este reprezentat pe 4 bytes cat timp o trecut de la ora 00:00 (mai exact numarul de tacti; 1sec = 18 tacti);
|
|
|
Memorat
|
Lord Anta, over and out!!!
|
|
|
•wickedman
|
|
« Răspunde #2 : Februarie 27, 2005, 17:40:12 » |
|
E o chestie mai veche care face apel la locatia $0000:$046C , pe care unde este reprezentat pe 4 bytes cat timp o trecut de la ora 00:00 (mai exact numarul de tacti; 1sec = 18 tacti);
eu zic sa nu incerci asa $0000:$046C e o poveste cu MSDOS iar numarul de tacti pe secunda depinde de procesor. solutia portabila e folosirea functiei time() si a constantei CLOCKS_PER_SEC (sau CLK_TCK pe compilatoare mai vechi)
|
|
|
Memorat
|
|
|
|
•sori
Strain
Karma: 0
Deconectat
Mesaje: 12
|
|
« Răspunde #3 : Februarie 27, 2005, 19:30:21 » |
|
WICKEDMAN!! #include <time.h> #include <stdio.h> int main(void) { long start,end; start=clock(); do end=clock(); while((end-start)/CLK_TCK<1); }
end-start/CLK_TCK reprezinta nr de sec de la inceputul programului,nu? Ce fac pt. milisec ex(0.01 s)?
|
|
|
Memorat
|
|
|
|
•LordAnta
Strain
Karma: 2
Deconectat
Mesaje: 43
|
|
« Răspunde #4 : Februarie 27, 2005, 19:36:35 » |
|
Faza cu $0000:$046C o stiu din cartea de la centrele de excelenta! Hai sa-i anuntam si noi pe ei ca au gresit!!!
|
|
|
Memorat
|
Lord Anta, over and out!!!
|
|
|
•domino
|
|
« Răspunde #5 : Februarie 27, 2005, 19:47:59 » |
|
Faza cu $0000:$046C o stiu din cartea de la centrele de excelenta! Hai sa-i anuntam si noi pe ei ca au gresit!!! N-au gresit.. doar ca faza asta merge doar pe Borland C++ ... ce a zis wickedman merge cam pe orice, inclusiv gcc.
|
|
|
Memorat
|
|
|
|
•wickedman
|
|
« Răspunde #6 : Februarie 28, 2005, 01:51:33 » |
|
Ce fac pt. milisec ex(0.01 s)? clock() iti intoarce timpul trecut de la inceputul rularii programului. precizia e suficient de mare. ai grija doar sa fortezi tipul expresiei in double / float while (0.5 > (double)(end-start)/CLOCKS_PER_SEC) { } asteapta 1/2s
|
|
|
Memorat
|
|
|
|
•Twister
Strain
Karma: 0
Deconectat
Mesaje: 45
|
|
« Răspunde #7 : Martie 04, 2005, 10:27:34 » |
|
Faza cu $0000:$046C o stiu din cartea de la centrele de excelenta! Hai sa-i anuntam si noi pe ei ca au gresit!!! Care carte? Exista vreo carte a centrelor de excelenta?
|
|
|
Memorat
|
|
|
|
•Cosmin
|
|
« Răspunde #8 : Martie 04, 2005, 10:46:44 » |
|
In freepascal este in unitul sysutils functia now care o puteti folosi pentru a determina durata de executie a unui program, asta daca nu vreti sa folositi toata viata borland pe 16 biti (si in delphi exista functia now in acelasi unit).
|
|
|
Memorat
|
|
|
|
•svalentin
|
|
« Răspunde #9 : Martie 04, 2005, 10:48:10 » |
|
Ce fac pt. milisec ex(0.01 s)? time(0) iti intoarce timpul trecut de la inceputul rularii programului. precizia e suficient de mare. ai grija doar sa fortezi tipul expresiei in double / float while (0.5 > (double)(end-start)/CLOCKS_PER_SEC) { } asteapta 1/2s Dar parca time() iti intorcea timpul in secunde?! 1. daca il fortezi in double, iti da si milisecunde?! 2. de ce mai trebuie sa imparti la CLOCKS_PER_SEC?! (asta parca trebuia sa faci, daca luai timpul cu clock() )
|
|
|
Memorat
|
|
|
|
•wickedman
|
|
« Răspunde #10 : Martie 04, 2005, 11:08:08 » |
|
Dar parca time() iti intorcea timpul in secunde?! oops! my bad evident e clock(), nu time()
|
|
|
Memorat
|
|
|
|
•dobre
|
|
« Răspunde #11 : Aprilie 03, 2005, 20:53:40 » |
|
Cosmin: Spuneai sa folosesc functia now ... La functia now in freepascal, tot timpul imi returneaza o valoare constanta. Am incercat in delphi, nu retuneaza si sutimi Putin ajutor. Un exemplu ar fi cel mai bine PS: Nu am help la freepascal...
|
|
|
Memorat
|
|
|
|
•Cosmin
|
|
« Răspunde #12 : Aprilie 03, 2005, 23:00:53 » |
|
Exista documentatie online pentru free pascal, o gasesti usor folosind google, cat despre miimi .. nu returneaza miimi e in alt format rezultatul, citeste in documentatie, pa.
|
|
|
Memorat
|
|
|
|
•dobre
|
|
« Răspunde #13 : Aprilie 04, 2005, 20:25:55 » |
|
Ok thx
|
|
|
Memorat
|
|
|
|
|