Calculer la somme 1/n

Résolu/Fermé
Avi - Modifié par baladur13 le 15/04/2016 à 10:12
 Utilisateur anonyme - 15 avril 2016 à 11:31
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

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
Oh mais bien sur! Merci beaucoup!
0
Utilisateur anonyme
15 avril 2016 à 11:24
De rien ;)
0
Utilisateur anonyme
15 avril 2016 à 11:31
Merci de passer le sujet en 'Résolu'
0