Gugsteer Postado Setembro 8, 2016 Denunciar Share Postado Setembro 8, 2016 Galera, Preciso de ajuda nesse algoritmo: Faça um programa que leia o número de termos e um valor positivo para X, calcule e mostre o valor da série a seguir: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rickayron Postado Setembro 12, 2016 Denunciar Share Postado Setembro 12, 2016 Olá, deve ser algo do tipo: #include <iostream> #include <stdlib.h> #include <math.h> using namespace std; /* Calcula o fatorial de modo recursivo. */ int fatorial(int n){ if(n<=1) return 1; else return fatorial(n-1)*n; } int* listaFatorial(int numeroTermos){ int limit=4; //limit interno do fatorial, ou seja o maior número que pode ser submetido ao calculo fatorial. int fatorial=1; int volta=0; //positivo. //int lista[numeroTermos]; int *lista=(int*) malloc(numeroTermos*sizeof(int)); cout<<endl; for(int i=1; i<=(numeroTermos); i++){ if(volta==0){ if(fatorial<=limit){ // cout<<fatorial<<"("<<i<<") "; lista[i-1]=fatorial; fatorial++; }else{ i--; volta++; fatorial--; } }else{ if(volta%2==1 && fatorial>1){ fatorial--; lista[i-1]=fatorial; // cout<<fatorial<<"("<<i<<") "; }else if(volta%2==0 && fatorial<limit){ fatorial++; lista[i-1]=fatorial; // cout<<fatorial<<"("<<i<<") "; }else{ i--; volta++; if(volta%2==0){ fatorial=1; }else{ fatorial=4; } } } } return lista; } int *listaExpoente(int numeroTermos){ int *lista=(int*) malloc(numeroTermos*sizeof(int)); for(int i=2; i<=(numeroTermos+1); i++){ //cout<<i<<" "; lista[i-2]=i; } return lista; } void escreveSerie(int numeroTermo){ int *listaExpoent=listaExpoente(numeroTermo); int *listaFatoria=listaFatorial(numeroTermo); for(int i=0; i<numeroTermo; i++, listaExpoent++, listaFatoria++){ if(*listaExpoent%2==0){ cout<<"(-X^"<<*listaExpoent<<")/"<<*listaFatoria<<"! "; }else{ cout<<"(+X^"<<*listaExpoent<<")/"<<*listaFatoria<<"! "; } } } double calculaSerie(int x, int numeroTermo){ double resultado=0; int *listaExpoent=listaExpoente(numeroTermo); int *listaFatoria=listaFatorial(numeroTermo); for(int i=0; i<numeroTermo; i++, listaExpoent++, listaFatoria++){ if(*listaExpoent%2==0){ resultado-=pow((x*1.0),(1.0*(*listaExpoent)))/fatorial(*listaFatoria); }else{ resultado+=pow((x*1.0),(1.0*(*listaExpoent)))/fatorial(*listaFatoria); } } return resultado; } int main(){ int x=2, numeroTermo=2; escreveSerie(numeroTermo); cout<<endl<<"serie="<<calculaSerie(x,numeroTermo); } você pode otimizar o código, pois fiz divido em funções para ficar mais claro a lógica. até mais. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Gugsteer
Galera,
Preciso de ajuda nesse algoritmo:
Faça um programa que leia o número de termos e um valor positivo para X, calcule e mostre o valor da série a seguir:
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.