Calculer la somme 1/n
Résolu
Avi
-
Utilisateur anonyme -
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! :)
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. |
A voir également:
- Calculer la somme 1/n
- Comment calculer la moyenne sur excel - Guide
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Somme en anglais excel - Guide
- Problème somme excel 0 ✓ - Forum Excel
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 :
Le changement de type d'itérateur :
Je suis un vilain troll !
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 !
Avi
Oh mais bien sur! Merci beaucoup!
Utilisateur anonyme
De rien ;)
Utilisateur anonyme
Merci de passer le sujet en 'Résolu'