| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
mnv_19
Registrado: 02 Sep 2007 Mensajes: 6
| Publicado: 20/02/2008 9:41 am | | | Título: Error con funcion de tiempo en C |
| Hola a todos, tengo que hacer un problema que me resuelva el problema de las torres de hanoi tanto de forma recursiva como iterativa, y al fianl del programa me tiene que mostrar el tiempo de cada una de ellas en milisegundos, el problema es que me muestra 0 en los dos, y creo que tiene que estar algo mal. Mas o menos tengo esto:
| Código: | #include <unistd.h> #include <sys/times.h> main(){ fpila *ini,*tmp,*final; fpila *pilaaux; struct tms inicio,fin; //para almacenar el tiempo int numdiscos, i,tiempo,tiempo2; //inicializo las pilas //pido el numero de discos //creo los nodos de las pilas time(&inicio); //tiempo que tarda inicio hanoi(numdiscos,&ini,&tmp,&final);//funcion hanoi de forma recursiva time(&fin); tiempo=(fin.tms_utime-inicio.tms_utime); printf("Funcion T.Hanoi,forma recursiva ha tardado %d, segundos \n",tiempo); ... ... time(&inicio); for(i=numdiscos;i>0;i--){ pilaaux=CNodo(i); push(&ini,pilaaux); } hanoiIterativo(numdiscos,&ini,&tmp,&final); time(&fin); tiempo2=(fin.tms_utime-inicio.tms_utime); printf("RESULTADOS DE LA PILA FINAL\n"); mostrar(&final); printf("El tiempo con la solucion iterativa es de: %d segundos\n",tiempo2); sleep(3); system("clear"); printf("POR LO TANTO LOS RESULTADOS OBTENIDOS SON:\n"); printf("LA FUNCION T.HANOI FORMA RECURSIVA -> %d segundos\n",tiempo); printf("LA FUNCION T.HANOI FORMA ITERATIVA -> %d segundos\n",tiempo2);
|
ME PODEIS AYUDAR?? GRACIAS UN SALUDO!!! |
| | Volver arriba | |  | mamntc02
Registrado: 30 Abr 2007 Mensajes: 399
| Publicado: 21/02/2008 1:18 am | | | Título: |
| Hola,
Deberías indicar q lenguaje (supongo q C) y q plataforma usas (Linux, Solaris, ...).
Por otro lado, el código te compila? Es q hay cosas q no me cuadran. time() es una función q se encuentra en <time.h> y devuelve el tiempo en segundos. No obstante, no usa como parámetro una estructura tms, sino un puntero a time_t, q suele estar definido como un long. Hay una función q sí usa esa estructura: es times, no obstante su uso creo q es más completo, aunque no la he usado nunca. Por lo q he entendido almacena los tiempos del proceso padre e hijo en curso, en caso de haberlo. Puedes ver como se usa en este ejemplo. No obstante yo intentaría usar funciones más "estándar" como time(), ftime() (ftime creo q no forma parte del estandar de C, pero la mayoría de implementaciones acostumbran a incluirla), q són más q suficientes para calcular en tiempo en segundos. ftime además llega hasta los milisegundos.
Saludos |
| | Volver arriba | |  | mnv_19
Registrado: 02 Sep 2007 Mensajes: 6
| Publicado: 21/02/2008 8:11 am | | | Título: |
| El lenguaje es C, y estoy utilizando Mandriva, me compila y ejecuta lo unico que no me hace es mostrarme el tiempo correcto porque de los dos me muestra 0
Como se haria entonces??gracias, un saludo |
| | Volver arriba | |  | | mamntc02
Registrado: 30 Abr 2007 Mensajes: 399
| Publicado: 21/02/2008 8:54 am | | | Título: |
| En mi vida lo había oído Me imagino q es una distribución de Linux, no? Igualmente sigo sin entender q te compile, y menos q te funcione. Quizá usas alguna otra especificación q desconozco, pero como puedes ver en el ejemplo q te pasé, los usos de la función time y la estructura tms no acaban de cuadrar.
Bueno, a lo q íbamos... por ejemplo:| Código: | int main(){ time_t tIni, tFin; tIni = tFin = 0; tIni = time(NULL); Sleep(4000); tFin = time (NULL); printf("Han pasado %lf segundos\n", difftime(tFin, tIni)); return 0; } |
Nota: ten en cuenta q el ejemplo lo he compilado en Windows, ya q es en lo q curro, y es por eso el uso de Sleep(4000) q trabaja en milisegundos, en tu caso deberías tener la función sleep de <unistd.h>, la cual trabaja en segundos. Por lo demás no te deberías preocupar pq es estándar.
Saludos. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |