fonction combinaison en c++ - C++ - Programmation
Marsh Posté le 29-08-2013 à 21:58:10
Une petite recherche sur internet répond à ma question. En fait, on a besoin de coder la fonction combinaison
Code :
|
Marsh Posté le 30-08-2013 à 01:02:20
Bonjour !
C'est curieux de passer par des flottants pour calculer un C(n,k), non ? Pourquoi ne pas faire le calcul directement avec les factorielles (en le faisant intelligemment pour limiter les risques débordement et limiter les calculs).
Toutefois, si vous avez besoin de calculer des combinaisons avec des grands nombres, vous allez devoir vous tourner vers une bibliothèque du genre gmp ou alors, en effet, travailler sur des nombres réels, mais en ayant des valeurs approchées.
Bonne continuation !
Marsh Posté le 30-08-2013 à 13:36:33
Cela parait curieux ...
Prenons un exemple : comb(12, 8)
on arrive à comb = (12/8)*comb(11,7) = comb(11,7)
En poussant la récursion, on arrive, sauf erreur de ma part, à 12*comb(5,1) = 60.
J'ai du mal à admettre que c'est juste, comme résultat
Et si vous faites (n*combinaison(n-1,q-1))/q, autant faire le calcul que j'ai évoqué dans mon premier post, cela revient au même, sans empiler les fonctions ...
Bonne continuation !
Edit : et je ne parle pas du fait que si q > n, on a obtient un nombre négatif.
Marsh Posté le 07-02-2014 à 14:17:37
J'ai codé autrement ma fonction combinaison.
Code :
|
Le problème est que cette fonction ne me donne pas des valeurs exactes pour des grands nombres. Je sens que je dois penser à utiliser une bibliothèque. J'attends vos réponses et vos propositions et merciiiiiiiiiiiiiiiiiii.
Marsh Posté le 07-02-2014 à 14:40:45
Ça vaut quoi "sizeof (long)" sur ta machine ? Si c'est 4, essaie d'utiliser des uint64_t comme entier. Il y aura toujours des limites, et si ça ne suffit pas faudra nécessairement passer par des bibliothèques spécialisées.
Marsh Posté le 07-02-2014 à 14:48:20
Est ce que les bibliothèques Boost C++ peuvent résoudre mon problème? Je vais utiliser
Code :
|
Marsh Posté le 29-08-2013 à 21:15:06
Est ce qu'il ya une fonction c++ prédéfinie permet de calculer la combinaison de n éléments parmi k ou on doit implémenter cette fonction?