Fonction bizarre

Résolu
Signaler
Messages postés
4
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
17 janvier 2012
-
Messages postés
4
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
17 janvier 2012
-
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

Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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
Messages postés
15192
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 décembre 2021
101
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...
Messages postés
4
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
17 janvier 2012

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