Jump to content

Recommended Posts

Posted

Olá, eu estou a fazer um programa e gostava de contar o tempo que o utilizador demorou a resolver o jogo. Não fasso ideia de como contar o tempo... queria uma forma de contar o tempo durante o programa e saber se da para contar o tempo de X a X sitios por exemplo:

coloco no inicio a começar a contagem e quero que a contagem pare num determinado sitio.. isso é possivel?

outra forma era contar o programa ate ao fim....

espero que me possam ajudar

cumps, Pedro Lopes

"Programming is like sex: one mistake and you're providing support for a lifetime.""A exigência conduz à excelência"

Posted

para contar o tempo até que o programa termine, se for em linux, podes usar a função time, fazes na consola:

time ./prog

para contares o tempo de determinada parte do código, podes utilizar a função gettimeofday que te dá o tempo actual do sistema. contas o tempo antes da parte que queres testar, contas no fim e fazes a diferença.

mais info: http://rabbit.eng.miami.edu/info/functions/time.html

Posted

Tens algumas variantes.

A primeira é a mais simples, mas a resolução é em segundos.

A segunda, conforme a sugesão do nata79, com gettimeofday pode ir até aos microsegundos, mas cuidado, o relógio pode contar de 10 em 10 milisegundos (e não microsegundos sequer).

A terceira é uma maneira de contar tempo assincronamente, usando sinais. Por exemplo, dá para implementar um tempo limite, ao fim do qual se termina o jogo.

#include <time.h>

int main(){
//
//

   time_t start = time(NULL); 
   //tempo em segundos desde um pré-determinadomomento no passado (the Epoch)

//
//
//
  time_t diff = time(NULL) - start;

  
}

#include <sys/time.h>

int main(){
//
//

   struct timeval t;
   gettimeofday(&t,NULL);
   //tempo em segundos e microsegundos desde um pré-determinadomomento no passado (the Epoch)

//
//
//

}

#include <unistd.h>
#include <alarm.h>

void alarm_handler(int sig) {

if(sig == SIGALRM) {
    //fazer qualquer coisa

   alarm(60); //reiniciar o alarme
  }

}


int main(){

   signal(SIGALRM, alarm_handler); //registar o handler para o sinal SIGALRM

//
//

   alarm(60); //daqui a um minuto a execução do programa será suspensa e executada o handler

//
//
//

}
Tharis Fan ClubMay Tharis bless you
Posted

Segundo percebi, o link que mostraste explica que é necessário estar a correr uma KORN Shell, que implementa um subsistema UNIX no Windows. Se assim for, o que disse mantém-se.

Se percebi mal, por favor corrijam-me.

Desaparecido.

  • 5 months later...
Posted
struct timeval t1,t2;
gettimeofday(&t1,NULL);
ler_ficheiro();
gettimeofday(&t2,NULL);

//fazer contas com t2 e t1 (segundos de t2 - segundos de t1; microseg de t2-microseg de t1. se negativo, +1 000 000 microsec e -1 segundo)

Tharis Fan ClubMay Tharis bless you

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.