16/06/10 20:00
Poco speranzoso di ricevere una risposta celere dato il periodo posto questo sorgente sperando che qualcuno mi aiuti a correggerlo:
Il problema sta nella parte finale..mi serve capire quanto dura il processo dato chevorrei utilizzare questo programma, naturalmente ottimizzato e migliorato, per fare il benchmark sui miei ipod e android phone..il tempo restituisce sempre valori strani..del tipo 60 secondi quando ne sono passati solo 30 o 0 secondi quando sono già passati 2 minuti..vi prego di aiutarmi..grazie
program scrivi_numeri_primi; uses crt,dos; var a,c,a_bis:longint; output:TextFile; primi:longint; h_iniziale,m_iniziale,s_iniziale,s100_iniziale,h_attuale,m_attuale,s_attuale,s100_attuale:word; tempo_iniziale,tempo_attuale:longint; io:longint; procedure verifica_numero_primo(x:longint); var b:longint; ore_i,ore_f,m_i,m_f,s_i,s_f,s_i100,s_f100:word; time_i,time_f:longint; k:longint; begin b:=x; x:=round(1 + sqrt(x)); repeat x:= x -1 until (b mod x = 0) xor (x=2); if x=2 then begin gettime(ore_i,m_i,s_i,s_i100); primi:=primi+1; append(output); write(output,b); write(output,' - '); close(output); gettime(ore_f,m_f,s_f,s_f100); time_i:=(ore_i*360000+m_i*6000+s_i*100+s_i100); time_f:=(ore_f*360000+m_f*6000+s_f*100+s_f100); k:=time_f-time_i; io:=io+k; end; end; begin primi:=0; io:=0; clrscr; assign(output,'numeri_primi.output'); rewrite(output); write('Inizio ricerca: '); readln(a); a_bis:=a; write(' Fine ricerca: '); readln(c); clrscr; writeln('Progresso operazione: '); gotoxy(7,3); write('|'); gotoxy(19,3); write('|'); GetTime(h_iniziale,m_iniziale,s_iniziale,s100_iniziale); for a:=a to c do begin verifica_numero_primo(a); if (a - a_bis) mod trunc((c - a_bis)/100) = 0 then begin gotoxy(1,3); write((a-a_bis)*100/(c-a_bis):3:0,' % '); end; if (a - a_bis) mod trunc((c - a_bis)/10) = 0 then begin gotoxy(8+(a - a_bis) div trunc((c - a_bis)/10),3); write('-'); end; end; writeln(' '); writeln('Operazione completata! '); writeln(' '); GetTime(h_attuale,m_attuale,s_attuale,s100_attuale); writeln('Premi un tasto per continuare '); writeln(' '); clrscr; tempo_iniziale:=(h_iniziale*360000+m_iniziale*6000+s_iniziale*100+s100_iniziale); tempo_attuale:=(h_attuale*360000+m_attuale*6000+s_attuale*100+s100_attuale)-io; writeln('Tempo impiegato: ',tempo_attuale-tempo_iniziale,' s100'); writeln('Numeri esaminati: ',c-a_bis); writeln('Numero primi trovati: ',primi); writeln('Velocita'': ',(c-a_bis)/((tempo_attuale/100)-(tempo_iniziale/100)):6:0,' numeri/secondo'); writeln('Input/Output : ',(io),' io/100s'); end.
Il problema sta nella parte finale..mi serve capire quanto dura il processo dato chevorrei utilizzare questo programma, naturalmente ottimizzato e migliorato, per fare il benchmark sui miei ipod e android phone..il tempo restituisce sempre valori strani..del tipo 60 secondi quando ne sono passati solo 30 o 0 secondi quando sono già passati 2 minuti..vi prego di aiutarmi..grazie
Ultima modifica effettuata da 16/06/10 21:26