Olá pessoal, alguem poderia me da um auxilio neste algoritmo, não sei se é a minha lógica ou se é uma especificação da linguagem c, em fim, não estou recebendo o valor desejado,
o algoritmo se trata do somatorio de n termos que o usuario infomra retornando seu resultado.
[b]Faça um programa para calcular seno ou cosseno de um dado ângulo. O seno ou
cosseno deve ser calculado iterativamente por meio da soma aproximada das séries
infinitas que os definem, a saber: Considere a equação que usei*
Entradas / saida
Você deseja entrar com o ângulo em graus ou radianos (g/r)? g
Qual a medida do ângulo? 30
Você deseja calcular seno ou cosseno deste ângulo (s/c)? s
Quantas iterações da série você deseja executar? 10
Resposta = 0.49998[/b]
#include<stdio.h>
#include<math.h>
/*PI = 3,14159...
* RAD = PI*G/180
* */
int main(void) {
char grausRad, senCos;
int i, iteracao;
float sen, cos, angulo, rad, PI;
PI = 3.14159;
printf("Voce deseja entrar com o angulo em Graus ou Radianos (g/r)? ");
scanf("%s", &grausRad);
printf("Qual a medida do angulo: ");
scanf("%f", &angulo);
printf("Voce deseja calcular Seno ou Cosseno deste angulo (s/c)? ");
scanf("%s", &senCos);
printf("Quantas iteracoes da serie voce deseja executar? ");
scanf("%d", &iteracao);
if(grausRad == 'g'){
rad = PI*angulo / 180;
printf("%.5f g", rad);}
else
if(grausRad == 's') {
rad = angulo;
printf("%.5f r", rad);}
sen = 0.0;
cos = 0.0;
if(senCos == 's') {
for(i = 0; i <= iteracao; i++){
sen = sen + (float) ((pow(-1, i) / fatorial(2*i + 1)) * pow(rad, 2*i+1));
//Mostrando sen na tela para teste
printf("sen: %d\n", sen);
}
printf("\n\nResposta: %.5f\n\n\n", sen);
}
else {
for(i = 0; i < iteracao; i++){
cos = cos + (float)(((pow(-1, i)) / ((fatorial(2*i)) * pow(rad, 2*i))));
//Mostrando o cos na tela para teste
printf("cos: %d\n", cos);
}
printf("\n\nResposta: %.5f\n\n\n", cos);
}
return 0;
}
int fatorial(int numero) {
int j, fat;
fat = 1;
for(j = 1; j < numero; j++) {
fat *= j;
}
//Mostrando o fat na tela para teste
printf(" - fat: %d\n", fat);
return fat;
}