Erro bizarro.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Erro bizarro.

Mensagem por isaac138 em Sab 30 Ago 2014, 16:57

Olá, estou tendo problemas ao implementar um algorítimo em c++ que calcula sin/cos pelas Séries de Taylor.

1º- Erro com o seno: Fiz uma função em um header que converte graus para radianos, mas toda vez que ponho ela na função seno tenho um erro estranho.

Exemplo:
Código:
cout << ts::seno (degtorad(30)); //Onde ts é a classe do header
Valor de retorno no console:30,5...

Quando na verdade deveria retornar 0,5...Isso acontece com qualquer número, seno que a função seno funciona perfeitamente quando não uso degtorad.


2º- Erro com cosseno: Fiz também uma função, nesse mesmo header para calcular cosseno.O problema é: enquanto seno funciona normalmente (sem degtorad), cosseno retorna um erro muito estranho...No caso do c4droid (Ide C/C++ para Android) ele retorna:
Código:
Segmentation fault
Já no Code::Blocks-win32 ele simplesmente trava.

 Pasta dos sources

Obrigado por terem dado atenção.

Carpe Diem.


isaac138

Número de Mensagens : 38
Data de inscrição : 11/02/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.infoirom.blogspot.com

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por dharrison em Dom 31 Ago 2014, 10:39

Tópico Movido para a Sessão Assuntos Diversos


Cara aqui são poucos que manja de programação em outras linguagens, mas espero que encontre a ajuda que procura.

dharrison

Ranking : Nota B
Número de Mensagens : 1243
Idade : 25
Data de inscrição : 04/02/2009
Notas recebidas : A - B
Reputação : 89
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por PedroX em Dom 31 Ago 2014, 11:02

Poderia postar apenas o método ts::seno() ?

O link para download não está funcionando.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por isaac138 em Dom 31 Ago 2014, 11:30

PedroX, resolvi o problema do cosseno no c4droid...era porque eu não tinha definido o fatorial de 0,então ele era dividido por 0.
Mas agora tenho outro problema...

1º- Fiz uma função na classe ts para calcular tangente da seguinte forma:

Código:

//Arquivo ts.h
 //...
static double tangente (double s);

E no arquivo ts.cpp:
Código:

//...

/*ts.cpp*/
#include "ts.h"
//...
double ts::tangente (double s)
{
return (seno(s)/cosseno(s));
}
//...


Essa função não retorna os valores esperados, como por exemplo  tan(45), retorna algo próximo de 0.896...
O que há de errado?

2º-O code::blocks segue com o problema degtorad, enquanto fiz as funções seno e cosseno funcionarem normalmente no c4droid,o code::blocks continua problemático.
código da degtorad:


Código:

include "ts.h"
/*ts.cpp*/
//...
double ts::degtorad(double deg)
{
    double rad;
    rad = ((deg * PI) / 180);
    return rad;
}
//...

E no ts.h:

Código:

double ts::degtorad(double deg);



O que há de errado?

Obrigado por ter disponibilizado tempo para responder.

Obs: Postei os código para quem não conseguiu baixar (Eu consegui aqui).
Se quiser eu posto o projeto em outro servidor.
Carpe Diem

isaac138

Número de Mensagens : 38
Data de inscrição : 11/02/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.infoirom.blogspot.com

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por PedroX em Dom 31 Ago 2014, 11:48

Falta um exemplo de como você chama o método. Mais uma coisa, as funções seno e cosseno pedem um valor em radianos?

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por isaac138 em Dom 31 Ago 2014, 11:56

Sim,seno cosseno são baseadas nas expansões em Taylor,logo elas usam radianos.
O exemplo:
Código:

/*main.cpp*/
#include "ts.h"
using namespace std;

cout << ts::tangente (ts::degtorad(45));



O valor esperado : 1
Valor retornado 0.8676...

!?

isaac138

Número de Mensagens : 38
Data de inscrição : 11/02/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.infoirom.blogspot.com

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por PedroX em Dom 31 Ago 2014, 12:02

ts::degtorad(45) retorna aproximadamente 0,785? Temos que descobrir se o erro está aí.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por isaac138 em Dom 31 Ago 2014, 12:15

Sim já testei degtorad,ela retorna um valor muito mais preciso que 0,785.
Ela funciona normalmente com seno e cosseno no c4droid.
Mais uma coisa a acrescentar, quando divido seno(s)/cosseno(s) fora da classe ts funciona normalmete.

isaac138

Número de Mensagens : 38
Data de inscrição : 11/02/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.infoirom.blogspot.com

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por PedroX em Dom 31 Ago 2014, 12:25

Tente fazer as funções seno e cosseno aceitarem um valor em graus e o converterem em radianos. Acho que o problema está na conversão.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por isaac138 em Dom 31 Ago 2014, 12:31

Você poderia por obsequio, apontar o erro?
Obrigado por responder (Aliás você foi o único ¬¬)

isaac138

Número de Mensagens : 38
Data de inscrição : 11/02/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.infoirom.blogspot.com

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por PedroX em Dom 31 Ago 2014, 12:41

Só poderei saber se é um erro mesmo quando você testar.

Poste os códigos parciais no PasteBin ou no Pastie.org, assim poderei analisar melhor.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Erro bizarro.

Mensagem por Conteúdo patrocinado Hoje à(s) 16:00


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum