Calcolo CPU time
Salve a tutti!
Mi servirebbe calcolare il CPU time di un mio algoritmo. Usando però le funzioni clock() o time(NULL) il programma non esegue più
. Come posso risovere il problema?
Mi servirebbe calcolare il CPU time di un mio algoritmo. Usando però le funzioni clock() o time(NULL) il programma non esegue più

Risposte
"il programma non esegue più": cosa intendi?
Sto usando code blocks. Mi esegue solo la prima printf in cui chiedo di inserire un intero e poi spunta "Process terminated with status -1073741510".
Stiamo parlando in maniera troppo generica, se non si ha a disposizione il codice si possono fare infinite ipotesi tutte inutili. Potresti postarlo?
Posso mandartelo in un messaggio privato?
No.
Sarebbe meglio metterlo qui in maniera che chiunque passi possa leggerlo e contribuire (o usufruire in futuro delle informazioni scambiate)
Sarebbe meglio metterlo qui in maniera che chiunque passi possa leggerlo e contribuire (o usufruire in futuro delle informazioni scambiate)
Ok, hai ragione. Il codice è un crivello di Eratostene. La stessa cosa mi succede con un altro programma che implementa il crivello di Atkin.
#include
#include
#include
#define MAX 520708
#define PRIMO 1
#define COMPOSTO 0
main(){
long int n, a[MAX], i, j, k;
printf("Seleziona un numero (diverso da 0): ");
scanf( "%d" , &n);
k = clock();
if (n>MAX || n==0) printf("Non valido");
else {
for(i=0;i
a = PRIMO;
a[0] = COMPOSTO;
a[1] = COMPOSTO;
for(i=2;i
{for(j=2;j<=(n/i);j++)
{a[i*j] = COMPOSTO;}}
k=clock-k;
for(i=0;i
{if (a != COMPOSTO)
printf("%d ", i);
}
printf("%d", k);
}
#include
#include
#include
#define MAX 520708
#define PRIMO 1
#define COMPOSTO 0
main(){
long int n, a[MAX], i, j, k;
printf("Seleziona un numero (diverso da 0): ");
scanf( "%d" , &n);
k = clock();
if (n>MAX || n==0) printf("Non valido");
else {
for(i=0;i
a[0] = COMPOSTO;
a[1] = COMPOSTO;
for(i=2;i
{a[i*j] = COMPOSTO;}}
k=clock-k;
for(i=0;i
printf("%d ", i);
}
printf("%d", k);
}
Scusami, c'è un clock senza parentesi. Ma non funziona lo stesso

#include<stdio.h> #include<math.h> #include<time.h> #define MAX 520708 #define PRIMO 1 #define COMPOSTO 0 int main(void) { long int n, a[MAX], i, j, k; printf("Seleziona un numero (diverso da 0): "); scanf( "%ld" , &n); k = clock(); if (n>MAX || n==0) printf("Non valido"); else { for(i=0;i<n;i++) a[i] = PRIMO; a[0] = COMPOSTO; a[1] = COMPOSTO; for(i=2;i<sqrt(n);i++) { for(j=2;j<=(n/i);j++) { a[i*j] = COMPOSTO; } } k=clock()-k; for(i=0;i<n;i++) { if (a[i] != COMPOSTO) printf("%ld ", i); } printf("%ld", k); } return 0; }
Così il codice è messo un po' meglio.
Ti ho sistemato il fatto che usi %d quando sti usando dei long int (che vogliono un %ld) e ti ho indentato un minimo decentemente il codice.
Comunque, stai usando la funzione sqrt che si trova in math.h, però devi dire a code blocks di passare al compilatore il parametro: -lm, dato che devi linkare la libreria math

Ecco, devo togliermi questo vizio di scrivere %d al posto di %ld xD grazie, ora funziona
