Obrigado pelo esclarecimento gente, agora deu certo. Tenho outras dúvidas relacionadas, acredito que seja melhor postar aqui mesmo para não criar outro tópico. Essa função para converter graus em radianos eu usei no seguinte problema: Fazer um programa em C que permita calcular o cosseno de um ângulo (em radianos) baseado na seguinte série: cos(x) = x^0 – x^2/2! + x^4/4! – x^6/6! ... Este programa deve atender às seguintes condicionantes: a) x será lido pelo teclado e deverá ser informado em graus; B) criar uma função que receba o x em graus e o devolva em radianos; c) o calculo do fatorial deve ser feito por uma função criada para este fim; d) a série acima deve ter uma quantidade de termos de tal forma que o valor acumulado em cos(x) difira de menos que 1.0 E-12 do valor devolvido pela função embutida “cos(x)” do C (ou seja, quando a diferença entre o valor acumulado da série e o valor da função “cos” do C for menor que 1.0 E-12, a série deve parar). Irei postar o código do meu programa aqui abaixo, mas só esclarecendo, criei 4 funções, que são as seguintes: 1-mod-calcula o módulo de um número 2-fat-calcula o fatorial de um número 3-angulo-converte um angulo de graus para radianos 4-pot-eleva uma numero real a um expoente inteiro não negativo #include <stdio.h>
#include <stdlib.h>
#include <math.h>
int fat(int num)
{int i,prod;
prod=1;
for(i=1;i<=num;i++)
prod*=i;
return prod;}
double angulo(double ang)
{double i;
i=ang*3.141592/180;
return i;}
double pot(double num,int exp)
{int i;
double res;
res=num;
if(exp==0)
res=1;
else
for(i=1;i<exp;i++)
res*=num;
return res;}
double mod(double x)
{double a;
if(x<0)
a=-x;
else
a=x;
return a;}
int main()
{
int i,sinal=-1;
double x,xrad,cosx=1;
printf("Este programa calcula o cosseno de um angulo, digite o angulo em graus \n");
scanf("%lf",&x);
xrad=angulo(x);
double j=cos(xrad);
printf("o angulo em radianos e %lf e seu cosseno e %lf \n",xrad,j);/*aqui eu imprimo o cosseno calculado pela função da biblioteca math.h para depois poder comparar com o calculado para o programa e ver se o programa funcionou corretamente*/
for(i=2;mod(j-cosx)>1.0E-12;i+=2,sinal=-sinal)
{cosx=cosx + sinal*pot(xrad,i)/fat(i);
printf("%lf \n",mod(j-cosx));/*estou imprimindo este termo apenas para verificar a convergência da série e saber se está parando realmente nas condições estabelecidas pelo problema*/}
printf("O cosseno de %.3lf é igual a %lf \n",x,cosx);
system("pause");
} O principal problema é o seguinte: O programa só funciona corretamente para ângulos menores que 50 graus, para angulos de maiores ou iguais a 50 graus o programa imprime: o cosseno de (angulo) e igual a -1.#IND00 Não sei porque está ocorrendo este erro. Outra dúvida é que quando imprimo mod(j-cosx) para verificar a convergência, esse termo está aparecendo apenas com 6 casas decimais, não tem como fazer aparecer com 12 casas decimais para poder verificar se o laço está encerrando realmente quando a precisão for de 10^-12??? Grato, Thiago