Calculer la somme 1/n

Résolu
Avi -  
 Utilisateur anonyme -
Bonjour,
j'ai un devoir à rendre en C++, et l'un des exercices est de calculer la somme 1+1/2+1/3+...+1/n pour un n donné par l'utilisateur en utilisant une fonction.
Mais le résultat est toujours 1 je ne sais pas pourquoi...
Si quelqu'un peut jeter un œil ce serait vraiment top!
Merci d'avance! :)


#include <iostream>
using namespace std;

double fsum(int num)
{
 double sum=0; 
 for(int i=1; i<=num; i++)
 {sum=sum+(1/i);}
 return sum;
}


int main ()
{
 int number;
 cout<<"Enter a number: ";
 cin>>number;
 double result=fsum(number);
 cout<<"The reversed sum is:\n"<<result<<endl;
        return 0;
}



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Utilisateur anonyme
 
C'est normal !
Tu utilises ton itérateur qui est un "int" pour diviser un "double".
La compilation se fait car dans certains cas, c'est possible, mais ici non.

Je te propose soit un changement de type d'itérateur soit un "cast" de ton itérateur lors du calcul.
Le cast lors du calcul :
 #include <iostream>
using namespace std;

double fsum(int num)
{
 double sum=0; 
 for(int i=1; i<=num; i++)
 {sum=sum+(1/double(i));}
 return sum;
}


int main ()
{
 int number;
 cout<<"Enter a number: ";
 cin>>number;
 double result=fsum(number);
 cout<<"The reversed sum is:\n"<<result<<endl;
 return 0;
}


Le changement de type d'itérateur :
#include <iostream>
using namespace std;

double fsum(int num)
{
 double sum = 0;
 
 for (double i = 1.0; i <= num; i++)
 {
  sum = sum + (1/i);
 }
 return sum;
}


int main()
{
 int number;
 cout << "Enter a number: ";
 cin >> number;
 cout << "The reversed sum is: " << fsum(number) << endl;
 //system("pause>nul");
 return 0;
}


Je suis un vilain troll !
0
Avi
 
Oh mais bien sur! Merci beaucoup!
0
Utilisateur anonyme
 
De rien ;)
0
Utilisateur anonyme
 
Merci de passer le sujet en 'Résolu'
0