Ir para conteúdo
Fórum Script Brasil
  • 0

calculo de exponente e calculo de tempo de execução.


ivrj

Pergunta

Pessoal, estou tentando fazer algumas coisas aqui e não estao dando certo:

1º: a função pow só é reconhecida se faço assim:

int a, b=2

a = pow(b,2);

mas não aceita:

a = pow(2,B);

porque ?

Outro problema é o calculo do tempo de execução de um programa. Quero medir o tempo de multiplicação de 2 matrizes com algoritmo generico e com algoritmo de strassen, mas o codigo que estou usando só retorna tempo 0:

clock_t inicio, fim;

inicio = clock();

/*

*

*......Execução do codigo ....

*

*/

fim = clock();

printf("tempo de execução: %lf\n",((fim - inicio)/CLOCKS_PER_SEC));

Lembrando que estou usando C para linux.

alguém poderia ajudar nesses 2 casos?

Editado por ivrj
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Primeiro, o b deve ser minusculo do jeito q você declarou:

a = pow(2,B);   ----->   a = pow(2,b);

No segundo caso, provavelmente o calculo é executado muito rapido dando zero. Para poder ver alguma mudança significativa no tempo de execução procure usar matrizes de ordens maiores

ai sim você terá um tempo de execução significativo.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0

Ao dividir o retorno de clock() por CLOCKS_PER_SEC você está convertendo o valor em segundos. Se você fizer:

clock() / (CLOCKS_PER_SEC/1000)

irá retornar o valor em milissegundos. E realmente se for uma operação muito rápida o retorno será sempre zero devido à sua precisão de segundos devido ao motivo dito acima. Para obter o tempo exato não divida por nada, use apenas o retorno de clock() diretamente.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante
Ao dividir o retorno de clock() por CLOCKS_PER_SEC você está convertendo o valor em segundos. Se você fizer:

clock() / (CLOCKS_PER_SEC/1000)

irá retornar o valor em milissegundos. E realmente se for uma operação muito rápida o retorno será sempre zero devido à sua precisão de segundos devido ao motivo dito acima. Para obter o tempo exato não divida por nada, use apenas o retorno de clock() diretamente.

vlw as respostas.. mas o pow la não é problema de case sensitive!

Simplismente ele só aceita pow(b,2) e não aceita pow(2,B). não entendi o porque disso!

quanto ao tempo, eu fiz um teste usando um scanf e mesmo assim não captura tempo nenhum. Se eu uso por exemplo isso:

clock_t ini fim;

char nome;

time(&ini);

printf(" digite o seu nome");

scanf ("%s", &nome);

time(&fim)

printf("voce demorou %d segundos para digitar seu nome", (fim - ini)); // com %.2f imprime apenas 0.

ai roda beleza. mas mostra apenas os segundos.

com o ini = clock(), ai sempre fica zerado o tempo...

Link para o comentário
Compartilhar em outros sites

  • 0

Mas porque ele não aceita o pow? Qual a mensagem que aparece?

Quanto ao clock: esta é uma implementação dependente de arquitetura e talvez sua versão do linux esteja apresentando este problema. Se você compilar para DOS/WINDOWS, o que acontece? E o retorno da função sem subtrair por nada nem dividir? É zero mesmo?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ivrj --
Mas porque ele não aceita o pow? Qual a mensagem que aparece?

Quanto ao clock: esta é uma implementação dependente de arquitetura e talvez sua versão do linux esteja apresentando este problema. Se você compilar para DOS/WINDOWS, o que acontece? E o retorno da função sem subtrair por nada nem dividir? É zero mesmo?

o pow da um erro na compilação, como se fosse problema de biblioteca, como se não existisse o POW no math.h.

depois colo o erro aki

Quanto ao tempo, to usando o ubuntu 8, q realemente parece muito enxugado em alguns apectos. não testei ainda no windows/dos não...

quando comecei a mexer nisso, fiz um printf no ini e no fim, e realmente parece q não imprimia 0, mas não me recordo. Vo fazer o teste depois e posto tudo isso!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...