elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como cronometrar un programa hecho en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como cronometrar un programa hecho en C  (Leído 4,167 veces)
leophysicist1987

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Como cronometrar un programa hecho en C
« en: 11 Febrero 2012, 00:57 am »

¡Saludos! Hace unos días en la Universidad, el profesor que imparte el curso de programación dejó una tarea en la cual por medio del uso de clock() y CLOCKS_PER_SEC tengo que hacer un programa que cronometre el tiempo de precisión en que la función pow() obtiene el resultado final deseado. El programa también me permite como evaluar un polinomio pero eso ya mas o menos lo estoy entendiendo. Si me resuelven mi duda, se los agradecería.

 :huh:  :huh:  :huh:


En línea

leophysicist1987

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Re: Como cronometrar un programa hecho en C
« Respuesta #1 en: 11 Febrero 2012, 01:09 am »

Se me había plantear mi duda  :rolleyes: y enseñarles el código fuente. Bueno la duda es que no sé como hago lo de la cronometración. Este es el código fuente

/* Este programa evalúa un polinomio
 y cronometra la función pow */

#include <stdio.h>
#include <math.h>
#include <time.h>

float pol( float z);

void main()
{
  clock_t ti, tf;
  double duracion;
  float u, z;
   
 
  ti = clock();
   
  for( z = -100000; z<=100000; z++ ){
  u = pol( z );
  printf( "%f/t%f\n ", z, u);
  }

  tf = clock();
 
  duracion = ((double)(tf - ti)) / CLOCKS_PER_SEC;
  printf( "%f\n", duracion );
 
 


}

float pol( float z)
{
  float u1;
 
  u1 = pow(z,5) + 3*pow(z,3) + 6*pow(z,2) + 4;
 
  return u1;
}

En este programa quiero evaluar el polinomio de grado 5 y que ese mismo programa calcule el tiempo que pow tarda en obtener los resultados. Sólo explíquenme que es lo que falta ¡por favor!


En línea

soyloqbuskas

Desconectado Desconectado

Mensajes: 219


¡El conocimiento es de todos!


Ver Perfil
Re: Como cronometrar un programa hecho en C
« Respuesta #2 en: 20 Febrero 2012, 02:11 am »

¡Buenas leophysicist1987!

Tu problema esta en la siguiten linea:
Citar
duracion = ((double)(tf - ti)) / CLOCKS_PER_SEC;

Esta linea debes escribirla asi:
Código
  1. duracion = (double)tf - (double)- ti / CLOCKS_PER_SEC;

Ademas el compilador me ha dado un Warning en tu declaracion del main. Deberias escribirlo asi:
Código
  1. int main(){
  2.    //el codigo del programa
  3.    return 0;
  4. }

y ponte un getchar() antes del return, si no se te cerrar el programa en cuanto acabes y no podras ver el resultado de la ejecucion.

Un saludo.
« Última modificación: 21 Febrero 2012, 02:21 am por soyloqbuskas » En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
Anastacio

Desconectado Desconectado

Mensajes: 111



Ver Perfil
Re: Como cronometrar un programa hecho en C
« Respuesta #3 en: 20 Febrero 2012, 18:52 pm »

Una preguntita. Eso mediria en segundos, microsegundos, nanosegundos, como mediria?
En línea

You, stop to close my post, you were novice too!!!!!!!!!!!!
Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Como cronometrar un programa hecho en C
« Respuesta #4 en: 21 Febrero 2012, 22:24 pm »

Una preguntita. Eso mediria en segundos, microsegundos, nanosegundos, como mediria?

CLOCKS_PER_SEC => interrupciones de reloj por segundo. Id est, medirá en segundos si no haces ninguna transformación previa.

¡Buenas leophysicist1987!

Tu problema esta en la siguiten linea:
Esta linea debes escribirla asi:
Código
  1. duracion = (double)tf - (double)- ti / CLOCKS_PER_SEC;

Ademas el compilador me ha dado un Warning en tu declaracion del main. Deberias escribirlo asi:
Código
  1. int main(){
  2.    //el codigo del programa
  3.    return 0;
  4. }

y ponte un getchar() antes del return, si no se te cerrar el programa en cuanto acabes y no podras ver el resultado de la ejecucion.

Un saludo.

Sólo quería decir que te falta un par de paréntesis y que se te coló un - en la asignación de duracion. Has puesto:  duracion = (double)tf - (double)- ti / CLOCKS_PER_SEC; y sería: duracion = ((double)tf - (double)ti)/ CLOCKS_PER_SEC

Saludos.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Como cronometrar un programa hecho en C
« Respuesta #5 en: 22 Febrero 2012, 03:00 am »

Sólo quería decir que te falta un par de paréntesis y que se te coló un - en la asignación de duracion. Has puesto:  duracion = (double)tf - (double)- ti / CLOCKS_PER_SEC; y sería: duracion = ((double)tf - (double)ti)/ CLOCKS_PER_SEC
Se puede reducir un poco mas. Al convertir explícitamente uno de los operandos de la resta al tipo "double" el otro debe ser del (o se convertirá al) mismo tipo. Eso también sucederá con la división.

Al final queda:
Código
  1. duracion = ((double) tf - ti) / CLOCKS_PER_SEC;

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines