Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: mapers en 25 Junio 2010, 20:35 PM

Título: tiempo de ejecucion
Publicado por: mapers en 25 Junio 2010, 20:35 PM
holas gente quisiera que me ayuden con este problema es sobre el tiempo de ejecucion de este ejercicio :


FACTORIAL(n)
1 if n = 0
2 then return 1;
3 else return (n * Factorial(n-1));



quisiera saber como determinar el tiempo de ejecucion......... me podrian dar una pista porfavor gracias de antemano........
Título: Re: tiempo de ejecucion
Publicado por: MIG80 en 25 Junio 2010, 21:01 PM
Puedes usar la función estandar clock(). Esta función devuelve la cantidad de marcas de reloj que pasaron desde que el programa empezo a  ejecutarse.
Ahora solo faltaria determinar cuanto dura una marca de reloj... :-\
Bueno ese valor se calcula usando la constante CLK_TCK , definida también en time.h ( Turbo C++), la cual nos da el numero de marcas de reloj por segundo ::)

Código (cpp) [Seleccionar]

#include <time.h>

//...

int main()
{
    clock_t inicio,fin;

    inicio = clock();

    /* Aqui va el codigo cuyo tiempo de ejecucion quieres medir */

    fin = clock();

    // obtenemos y escribimos el tiempo en segundos
    printf("Tiempo empleado: %f\n",(fin - inicio)/CLK_TCK);

    return 0;
}
Título: Re: tiempo de ejecucion
Publicado por: Mr.Blue en 25 Junio 2010, 22:07 PM
http://foro.elhacker.net/programacion_cc/generador_de_ips_aleatorias_y_algoritmo_basico_brute_force_codigos_fuente_en_c-t41605.0.html

Aca hay un programa por Rojodos

En donde aplica esto.

S2
Título: Re: tiempo de ejecucion
Publicado por: Nork en 25 Junio 2010, 23:46 PM
Si te refieres al tiempo algorítmico del código es de orden de complejidad n!. Si te refieres al tiempo de una ejecución si estas en linux puedes utilizar el comando time y te pondrá lo que ha tardado.
Título: Re: tiempo de ejecucion
Publicado por: plof en 26 Junio 2010, 00:19 AM
- Complejidad: clase P.
- Orden de eficiencia: O(n).
- Tiempo de procesador: clock().

Saludos.
Título: Re: tiempo de ejecucion
Publicado por: mapers en 26 Junio 2010, 04:52 AM
y como lo puedo hallar a mano  porque eso es lo que me piden .............
Título: Re: tiempo de ejecucion
Publicado por: cbug en 26 Junio 2010, 05:21 AM
Si es a mano seguramente es el cálculo de complejidad. Leete un libro de algorítmica, aunque es más análisis matemático(cálculo) que otra cosa.
Título: Re: tiempo de ejecucion
Publicado por: mapers en 26 Junio 2010, 06:31 AM
a ver pasame alguno de tus ejemplares porfavor necesito aprenderlo yaaaaaaa!!!
Título: Re: tiempo de ejecucion
Publicado por: @synthesize en 26 Junio 2010, 06:31 AM
Puedes usar interrupciones, creo.
Título: Re: tiempo de ejecucion
Publicado por: leogtz en 26 Junio 2010, 06:33 AM
Cita de: mapers en 26 Junio 2010, 06:31 AM
a ver pasame alguno de tus ejemplares porfavor necesito aprenderlo yaaaaaaa!!!


Consulta a Brassard o a Knuth, es de lo mejor que hay, aunque de lo más complejo.
Título: Re: tiempo de ejecucion
Publicado por: plof en 26 Junio 2010, 09:15 AM
Lo que buscas es una función T(n) o polinomio de grado 1 ( de ahí que el orden de eficiencia sea O(n) ) cuyos términos independientes equivalen a los tiempos de ejecución de las operaciones elementales de la función recursiva.

...seguro que ahora lo tienes más claro :P.
Como aquí no se resuelven las tareas de clase te recomiendo el mismo autor que comenta Leo:
Fundamentos de algoritmia (G Brassard & P Bratley).
.. y presta atención al capítulo 4, sobre todo a la resolución de recurrencias.

Saludos.
Título: Re: tiempo de ejecucion
Publicado por: cbug en 26 Junio 2010, 15:37 PM
Citara ver pasame alguno de tus ejemplares porfavor necesito aprenderlo yaaaaaaa!!!

Sinceramente me das pena por tus expresiones y formas de comportarte.

Primero aprende matemática y luego sigue con lo demás.