Logo Hardware.com.br
Papito
Papito Super Participante Registrado
1.1K Mensagens 0 Curtidas

Função que pega o tempo em C

#1 Por Papito 18/11/2004 - 09:11
Galera to fazendo um trabalho aqui sobre ant colony e to precisando de uma função (em linux) que retorne o tempo (pode ser minutos e segundos, mas se for só segundos já me salva a pele)......

será que alguem ai pode me ajudar :wink:

[]'s
Responder
Papito
Papito Super Participante Registrado
1.1K Mensagens 0 Curtidas
#3 Por Papito
18/11/2004 - 19:20
seria uma função que retornasse a hora, mas nesse caso eu preciso dos segundos pra poder usá-los em uma outra função de randomização da escolha dos caminhos das formigas :roll:

eu tinha feito uma função pra fazer isso mais ai eu tve q colocar umas threads no meio e ai ficou meio confuso... sem contar q foi uma "gambiarra", por isso eu preferiria uma função do C msm......

jqueiroz se vc souber alguma função ai pra poder fazer essas duas coisas pode dizer tb, vai q um dia eu precise dela :wink:

[]'s
"Se debugar é a arte de retirar bugs de um programa, programar deve ser a arte de inserí-los"
Papito
Papito Super Participante Registrado
1.1K Mensagens 0 Curtidas
#8 Por Papito
20/11/2004 - 10:32
ae jqueiroz como faço pra ler essa semente do /dev/random?

e eu to tendo um probleminha do com o localtime...... ele tá dentro de um while pra cada interação ele pegar o tempo, mas ele pegou a primeira vez e depois mantem o msm :roll:
num sei o q tah acontecendo aqui..... alguem dá um help
"Se debugar é a arte de retirar bugs de um programa, programar deve ser a arte de inserí-los"
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#10 Por jqueiroz
22/11/2004 - 17:47
ae jqueiroz como faço pra ler essa semente do /dev/random?


Leia como se fosse um arquivo onde estivesse gravado um número inteiro:


...
volatile int seed;
FILE *random = fopen("/dev/random","r"
if( fread( random, &seed, sizeof(seed) ) != sizeof(seed) ) {
printf( "Erro ao ler semente randômica\n"
exit(-1);
}
...


e eu to tendo um probleminha do com o localtime......
ele tá dentro de um while pra cada interação ele pegar o tempo, mas ele pegou a primeira vez e depois mantem o msm
num sei o q tah acontecendo aqui..... alguem dá um help


Hum, fui rever as funções agora.

localtime() na verdade não informa a hora, mas sim converte um valor de hora que vc pega com a syscall time().


#include <time.h>

time_t time(time_t *t);


Vc pode usar o parâmetro de time() como NULL: "hora_inicio = time(NULL);".

O problema que pode estar havendo aí é dessas iterações levarem menos de um segundo, ou se vc quiser precisão de menos de um segundo na sua medição, já que time() te retorna o tempo em segundos.

Nesse caso, vc precisa usar outra função, e essa vai mudar de sistema para sistema. Sendo Linux, acredito que vc possa usar "getitimer()", mas essa função é bem complicada, e eu nunca cheguei a usar.
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
Papito
Papito Super Participante Registrado
1.1K Mensagens 0 Curtidas
#11 Por Papito
22/11/2004 - 19:18
não acredito que as interações estejam ocorrendo a menos de segundos... jah que pra mim poder visualizar na tela as "formiguinhas" andando eu coloquei um sleep de 2 segundos.... e muitas vezes tb, ocorrem muitas interações devido ao tamoanho do caminho a ser percorrido....

quanto ao /dev/random eu vo testar e depois posto as respostas

e tb vo tentar usar o getitimer().....

Valeu pela ajuda dinovo jqueiroz
"Se debugar é a arte de retirar bugs de um programa, programar deve ser a arte de inserí-los"
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal