IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

probleme calcul Factorielle, Coefficient binomial


Sujet :

C++Builder

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut probleme calcul Factorielle, Coefficient binomial
    Bonjour,

    J'ai implémenté un petit code pour le calcul des Coefficients binomiaux, voir lien;

    http://fr.wikipedia.org/wiki/Coefficient_binomial

    le seul problème est quand je veux calculer des factorielles pour des grands nombre, sa génère un problème de débordement.
    J'ai même essayé avec des Long , mais toujours le même problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
     
     
    long double  Factoriel(long double n)
    {
    //
      long double i; /*compteur de boucle*/
        long double valeur = 1;
        if(n == 0 || n == 1) { //EVOL: Gestion du cas particulier "1!"
            return 1;
        }
        else {
            for(i= 1; i <= n; i++) {
                valeur *= i;
            }
        }
        return valeur;
     
     
    }


    Merci pour votre aide
    « Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»

    « No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Il ne me parait pas judicieux de travailler avec des "long double" dans la boucle if et dans l'appel de la fonction.
    i faudrait essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    long double  Factoriel(int n)
    {
    //
      int i; /*compteur de boucle*/
        long doublevaleur = 1;
        if(n == 0 || n == 1) { //EVOL: Gestion du cas particulier "1!"
            return 1;
        }
        else {
            for(i= 1; i <= n; i++) {
                valeur *= double(i);
            }
        }
        return valeur;
     
     
    }
    de trop grandes valeurs de n généreront obligatoirement un dépassement de valeur possible, même avec un long double.

    Nota : le calcul d'une factorielle est un bon exemple de calcul récursif .
    Gilbert PASQUALINI

Discussions similaires

  1. probleme de calcul factoriel
    Par argon dans le forum C
    Réponses: 39
    Dernier message: 19/02/2007, 09h53
  2. Probleme calcul Delphi
    Par kennes dans le forum Delphi
    Réponses: 4
    Dernier message: 19/11/2006, 02h00
  3. [Math] Fonction pour calculer Factorielle(n)
    Par Asdorve dans le forum Vos contributions VB6
    Réponses: 2
    Dernier message: 10/08/2006, 22h20
  4. Calcul Factorielle
    Par Mestoph dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2006, 23h27
  5. [LG] Problème calcul de trinome
    Par shinryu666 dans le forum Langage
    Réponses: 3
    Dernier message: 24/09/2005, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo