Pessoal estou cursando faculdade e travei em um exercicio da lista, é um algoritmo em C, poderiam me ajudar
meu problema é que eu coloco um numero para servir a variavel x e ela calcula umas 4 vezes de maneira adequada, os numeros saem diferentes, depois o resultado sai todo igual, ate dar o loop 10 vezes, obrigado pela ajuda
A questão é a seguinte
O cosseno de um ângulo X (em radianos) pode ser calculado utilizando-se a série
COS(X) = 1 – X2/2! + X4/4!- X6/6! +, …
Escrever um algoritmo que leia um valor para X, calcule e escreva o valor da soma dos 10
primeiros termos da série. Voce deve usar uma estrutura de repetição.
#include <stdio.h>
int main ()
{
float x,m,e,h,y,n,f,b,l,k,w;
int s;
printf(“Digite um valor para o angulo em radiano \n”);
scanf ("%f", &x);
w = 0;
k = 0;
y = 0;
h = 1;
f = 0;
for (s=1;s<=8;s++){
b = s%2;
/*Colocar o valor positivo e negativo usando o if*/
if (b==0){
w = w + 2;
y = pow(x,w);
y = y*(-1);}
else{
w = w + 2;
y = pow(x,w);
y = y*1;}
/*Calculo do fatorial*/
k = 1;
f = f+2;
m = f;
for (;m>0;m=m-1)
k = m * k;
/*resultado final*/
h = y/k + h;
printf("%f\n",h);
Primeiramente bem vindo! Olha, a sua pergunta ficou um pouco confusa e seu código ficou com a formatação errada. O que você quer fazer? E qual a dúvida? Vi que seu código tem números negativos, ângulo e fatorial, qual é o objetivo da questão?
Ola, obrigado! Não consegui formatar direitinho, e esqueci de colocar o enunciado da questão, a questão é a seguinte
O cosseno de um ângulo X (em radianos) pode ser calculado utilizando-se a série
COS(X) = 1 – X2/2! + X4/4!- X6/6! +, …
Escrever um algoritmo que leia um valor para X, calcule e escreva o valor da soma dos 10
primeiros termos da série. Voce deve usar uma estrutura de repetição.
Como é um exercício, provavelmente “querem” que você calcule a potência e o fatorial manualmente, mas na verdade isso não é necessário.
Por exemplo, no segundo termo, o numerador é x2 e no terceiro termo é x4. Você não precisa calcular x elevado a 4, basta pegar o valor anterior e multiplicar por x duas vezes. E a cada termo, como o expoente aumenta de 2 em 2, basta seguir multiplicando por x duas vezes.
No denominador, mesma coisa: no segundo termo ele vale 2!, ou seja, 2 multiplicado por 1. No terceiro termo, para obter 4!, basta multiplicar o que falta (3 e 4), no quarto termo, basta multiplicar o que falta (5 e 6), em vez de multiplicar tudo de novo.
Traduzindo isso para código:
float x;
// ler valor de x, etc...
float total = 1.0; // começa no 1
int sinal = -1;
float num = 1.0, den = 1.0;
for (int i = 1; i < 10; i++) {
num *= x * x;
den *= 2 * i * ((2 * i) - 1);
total += sinal * (num / den);
sinal *= -1;
}
printf("%f",total);
Também criei uma variável para controlar o sinal (bastando inverter de -1 para 1, para -1, etc).
E como o primeiro termo é 1, já inicializei o total com esse valor, e no loop só calculei os 9 termos restantes.