Ecuación con funciones C++

Iniciado por iAmChapin_, 2 Septiembre 2015, 16:47 PM

0 Miembros y 1 Visitante están viendo este tema.

iAmChapin_

Hola! Pues tengo una pequeña duda con mi código, porque no me da el resultado deseado  :xD esta casi perfecto, solo que en ves de 5.33333 me da 3.33333. El problema está así:



Lo hice conforme está esa ecuación a papel y realizándolo por pasos, el resultado da 5.33333. Les presento mi código:

Código (cpp) [Seleccionar]
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <math.h>
using namespace std;

//FUNCION SUMATORIA
float sigma(float a, float b){

float division;
float suma = 0;
float operacion = 1;
float i = 1;

//ELEVAMOS, SACAMOS FACTORIAL, DIVIDIMOS Y SUMAMOS PARA OBTENER EL RESULTADO
while(i <= b){
               a = pow (a,i);
     for (int z = 1; i <= b; z++){
                         operacion = operacion*z;
                         division = a / operacion;
                       suma = division+suma;
                         i++;
         }
   }
   return suma;
}

int x;    //VARIABLES GLOBALES DE TIPO ENTERO
int n;

int main(){

gotoxy(6,4); cprintf("Yo puedo resolver sigma");
textcolor(15);
gotoxy(24,6); cprintf("Ingresa X: ");
cin >> x;
textcolor(15);
gotoxy(24,8); cprintf("Ingresa N: ");
cin >> n;
textcolor(15);
gotoxy(24,10); cprintf("El resultado es: "); cout << sigma(x, n);

getch();
return 0;
}


En cada vuelta de la línea 16 a la línea 21 va aumentando todas las operaciones, x elevado a la i, factorial de i!, hecho esto divide y por último suma, tal y como lo describe el problema, pero el resultado debe ser 5.33333 y mi programa da 3.33333  :xD si pueden ver mi código y ver cual es el problema, les agradecería mucho si me brindaran la solución porfavor! Muchísimas gracias por leer!

someRandomCode

Código (cpp) [Seleccionar]

#include <iostream>
#include <cmath>
int factorial(int ingreso)
{
int regreso = 1;
for (int i=0; i<ingreso;i++)
{
regreso *= (ingreso-i);
}
return regreso;
}
double sumatoria_simple(int desde, int hasta, int x)
{
double resultado;
for (; desde<=hasta;desde++)
{
resultado = resultado + (std::pow(x,desde)/(float)factorial(desde));
}
return resultado;
}
int main()
{
std::cout << sumatoria_simple(1,5,6) << std::endl;
}




Eso me da en papel segun la ecuacion que vos pasaste.. obviamente, lo probe con un solo ejemplo a las apuradas y acotado al caso tuyo, no es generico.. no se que valor le diste a x, i y n..

Probalo.. esta hecho asi nomas..

iAmChapin_

Muchas gracias mi amigo someRandomCode, lo modifique en algunas cositas hasta que me dio el resultado!!  ;-)

someRandomCode

No hay problema, si te soluciono, por favor marca el thread como resuelto! :)