Petit problème en C
Résolu
mega
-
mega -
mega -
A voir également:
- Petit problème en C
- Petit 2 ✓ - Forum Bureautique
- Trier du plus petit au plus grand excel - Guide
- Comment imprimer une photo en petit - Forum Photo numérique
- Petit 3 ✓ - Forum Word
- Comment écrire mètre carré avec un m+2 expos? ✓ - Forum Windows
2 réponses
i est un entier, donc (2*i)/((2*i)+1) est calculé comme un entier. Ici 2/3=0
Ce n'est qu'une fois calculé qu'on donne la valeur 0 à b.
Pour que ça marche, tu dois caster le calcul en type flottant :
Ce n'est qu'une fois calculé qu'on donne la valeur 0 à b.
Pour que ça marche, tu dois caster le calcul en type flottant :
double b = (double) (2*i)/(2*i+1);
Merci de m'avoir répondu j'ai remplacé int i par double i et mon programme d'arc tangente fonctionne sauf le calcul de PI...^^
#include <iostream>
using namespace std;
double eps=10e-8;
double arctg (double x)
{
double i=1;
double result=1,terme1=1,terme2=1,terme3=1,a=(x*x)/(1+(x*x)),b;
do
{
b=(2*i)/((2*i)+1);
terme2=b*terme2;
terme1=a*terme1;
terme3=terme1*terme2;
result=result+terme3;
i++;
}while(terme3>=eps);
result=result*(a/x);
return result;
}
int main()
{
double x;
cin>> x;
cout<<arctg(x)<<endl;
cout<<"Pi "<< 4*((4*arctg(1/5))-(arctg(1/239)))<<endl;
return 0;
}
#include <iostream>
using namespace std;
double eps=10e-8;
double arctg (double x)
{
double i=1;
double result=1,terme1=1,terme2=1,terme3=1,a=(x*x)/(1+(x*x)),b;
do
{
b=(2*i)/((2*i)+1);
terme2=b*terme2;
terme1=a*terme1;
terme3=terme1*terme2;
result=result+terme3;
i++;
}while(terme3>=eps);
result=result*(a/x);
return result;
}
int main()
{
double x;
cin>> x;
cout<<arctg(x)<<endl;
cout<<"Pi "<< 4*((4*arctg(1/5))-(arctg(1/239)))<<endl;
return 0;
}
je tenterai plutôt : qui fait une transformation implicite de int vers double.