Fonction bizarre

Résolu
albert232 Messages postés 3 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 17 janvier 2012 - 17 janv. 2012 à 15:05
albert232 Messages postés 3 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 17 janvier 2012 - 17 janv. 2012 à 17:09
Bonjour ,

En Visual Basic la Fonction est :
Function Facteur_de_Ralentissement(A As Integer) As Double
Facteur_de_Ralentissement = ((A - 1) / (A + 1)) ^ 2
Facteur_de_Ralentissement = Format(Facteur_de_Ralentissement, "##0.0####")
End Function

En Borland C++ la fonction qui donne un résultat est :

double SlowDownFactor( int A)
{
double Alpha ;
double N = (A-1);
double D = (A+1);
double S = N/D ;
Alpha = pow(S , 2) ;
return Alpha ;
}

Celle qui plante :
double SlowDownFactor( int A)
{
double Alpha , S ;
double S = (A-1)/(A+1); //* refus de la division par (A+1) *//
Alpha = pow(S , 2) ;
return Alpha ;
}
Si je multiplie au lieu de diviser, ça donne un résultat !

Erreur ou quoi ?

Merci de répondre.

3 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
17 janv. 2012 à 15:59
Bonjour.

Tu fais une division entière, donc forcément ça ne fonctionne pas...
Soit tu fais une variable temporaire de type double, soit tu dis que tu veux réaliser une division décimale. Si l'un des membres de ta division est un nombre décimal, la division devient décimale.

Donc:
  double S = ((double)(A - 1)) / (A + 1);


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
BunoCS Messages postés 15426 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 28 novembre 2023 102
17 janv. 2012 à 16:31
Hello,
Attention également à la division par zéro


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
albert232 Messages postés 3 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 17 janvier 2012
17 janv. 2012 à 17:09
Merci pour la réponse : ça marche.

A est un entier >= 0
Pour le cas A = 1 , il est traité par une autre fonction similaire.
Maintenant je m'attaque à une fonction à une trentaine de variables
0
Rejoignez-nous