Dev - C++ - problema con suma de decimales

 
Vista:

problema con suma de decimales

Publicado por nol (2 intervenciones) el 23/06/2012 18:32:00
hola a todos queria preguntar porque me sale siempre como respuesta uno , se supone que mi algoritmo sirve para hallar esto:
1+1/2+1/3.....+1/N

aui les dejo mi algoritmo , a ver si pueden ayudarme , muchas gracias.


#include <iostream>
#include <stdio.h>
using namespace std;

int main()
{

float s;
int i,n;

cout<<"Ingrese N : ";
cin>>n;

s=0;
i=0;
while(i<n)
{

s=s+1/(i+1);

i++;
}


cout<<"El valor es: "<<s<<endl;


system("PAUSE");
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

problema con suma de decimales

Publicado por Capitan Kirk (48 intervenciones) el 27/06/2012 09:29:44
El problema es que la variable i es entera. Entonces, en la expresión

s = s + 1 / (i+1)

dado el orden de precedencia de los operadores, te evalúa primero 1/(i+1). i es entero, la constante 1 te la toma como entero, por tanto 1/(i+1) te lo toma como división entera, cuyo cociente valdrá 1 cuando i=0 y 0 cuando i>0.

La solución es simple: Declara i como float, o bien añade decimales a las constantes (es decir, utiliza 1.0 en lugar de 1).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar