begin process at 2008 07 06 02:51:21
1 205 441 membres
21 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FACTORIELS ET COMBINAISONS


Information sur la source

Catégorie :Maths Classé sous : factorielle, combinaison Niveau : Débutant Date de création : 16/07/2005 Date de mise à jour : 25/11/2005 21:42:45 Vu / téléchargé: 7 493 / 979

Note :
4,5 / 10 - par 2 personnes
4,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Calcul des factoriels avex une fonction et utilisation de cette même fonction pour calculer les combinaisons. Les interets sont multiples deux fonctions sont présentes, on en utilise une dans une autre, utilisation de boucles for, interet mathématique évident.

Source

  • Function Combinaison(n As String, k As String) As String
  • 'Les deux premieres étapes évitent des calculs évidents
  • If k = 0 Or n = k Then
  • Combinaison = 1
  • Exit Function
  • End If
  • If k = 1 Or k = n - 1 Then
  • Combinaison = n
  • Exit Function
  • End If
  • Combinaison = Factoriel(n) / (Factoriel(k) * Factoriel(n - k))
  • End Function
  • Function Factoriel(n As String) As String
  • Dim f As String
  • If n <= 1 Then
  • 'Par convention 0!=1
  • Factoriel = 1
  • Else
  • Factoriel = n * Factoriel(n - 1)
  • End If
  • End Function
Function Combinaison(n As String, k As String) As String
'Les deux premieres étapes évitent des calculs évidents

If k = 0 Or n = k Then
   Combinaison = 1
   Exit Function
End If

If k = 1 Or k = n - 1 Then
   Combinaison = n
   Exit Function
End If

Combinaison = Factoriel(n) / (Factoriel(k) * Factoriel(n - k))

End Function

Function Factoriel(n As String) As String
Dim f As String

If n <= 1 Then
   'Par convention 0!=1
     
   Factoriel = 1
Else
   Factoriel = n * Factoriel(n - 1)
End If

End Function
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

18 juillet 2005 06:55:00 :
Modifications suite au commentaire de Zlub.
25 novembre 2005 21:42:45 :
Code
  • signaler à un administrateur
    Commentaire de Zlub le 18/07/2005 02:42:35

    Factorielle pour le recursif, c'est pas mal non plus

    Function Factoriel(n As String) As String
      If n <= 1 Then
        Factoriel = 1
      Else
        Factoriel = n * Factoriel(n - 1)
      End If
    End Function

    Idem pour les combinaisons:

    Function Combinaison(n As Integer, p As Integer) As Integer
        If (p = 1) Then
          Combinaison = n
        ElseIf (p = n) Then
          Combinaison = 1
        Else
          Combinaison = (Combinaison(n - 1, p - 1) + Combinaison(n - 1, p))
        End If
    End Function


    dans Command5_Click tu peux utiliser une seule variable temporaire :
       tmp = Text2.Text
       Text2.Text = Text3.Text
       Text3.Text = tmp

    ++

    Zlub

  • signaler à un administrateur
    Commentaire de Julien39 le 18/07/2005 06:58:01

    J'ai effectué les modifications et c'est assez subtil surtout Factoriel = n * Factoriel(n - 1). Cependant je ne pense pas que Combinaison = (Combinaison(n - 1, p - 1) + Combinaison(n - 1, p)) apporte quelque chose de supplémentaire au programme (en plus sa le ralentit)

  • signaler à un administrateur
    Commentaire de Zlub le 18/07/2005 10:47:33

    vi forcement la recursivitée, ça fait souvent mal niveau charge processeur, à cause des empilement de contextes...

    Pour combinaison, c'est juste pour te presenter une autre façon de programmer la fonction de calcul (sur même modele que factorielle). Mais c'est clair que niveau performance c'est pas le top ...

  • signaler à un administrateur
    Commentaire de Zlub le 20/07/2005 08:12:44

    J'avais pas vu tes autres sources ... sans vouloir te blesser ... Hé man, faut que t'arretes de pondre des applis de math avec la même interface graphique :)

    J'sais pas moi, éclates toi à faire autre chose ... trouves toi une idées de soft qui te plait et trace...

  • signaler à un administrateur
    Commentaire de rambc le 28/09/2005 10:39:54

    Pour info., la méthode récursive pour calculer une combinaison devient intéressante pour des TRES gros entiers car elle fait disparaître des multiplications et des divisions qui peuvent être TRES coûteuse en temps pour de TRES gros entiers .

  • signaler à un administrateur
    Commentaire de amezghal le 10/03/2006 17:08:01

    je trouve que tu evite pas les erreurs dans ce code
    exemple ci on a entré comme valeur pour le factoriel(-5)
    car dans ton code t'a ecrit
    if i<=1 then y a pas de factoriel pour les négatfs
    merci

Ajouter un commentaire

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS