Programme de maths Aider moi SVP.....

Messages postés
5
Date d'inscription
samedi 6 décembre 2008
Statut
Membre
Dernière intervention
14 décembre 2008
- - Dernière réponse : cs_blanc76
Messages postés
47
Date d'inscription
samedi 27 novembre 2004
Statut
Membre
Dernière intervention
21 avril 2009
- 29 déc. 2008 à 23:44
Salut,
Donc je suis nouvelle programmeuse et je veut réaliser le programme suivant:

soit un tableau de 8 cases de type entier, je veut afficher toutes les probabilités possibles des combinaisons de 8 entiers, commancant par les nombres de un chiffre jusqu'à le nombre de 8 chiffres

(0,5,7,6,3,4,1,9)
les resultats: 0,5,7,6,3,4,1,9,05,07,06,......,057,056,053....,0576,0573,...........,05763419

Vraiment un grand merci pour vous.
Bon courage cher(e)s programmeur(euse)s.
Afficher la suite 

18 réponses

Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
Bonsoir,

nombre de combin de 2 parmi 8
nombre de combin de 3 parmi 8
nombre de combin de 4 parmi 8
nombre de combin de 5 parmi 8
nombre de combin de 6 parmi 8
nombre de combin de 7 parmi 8
nombre de combin de 8 parmi 8

Voir sur ce site les études réalisées sur ce sujet (Ma petite combine etc...)

cantador
Commenter la réponse de cs_cantador
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
0
Merci
Bonjour Nina,

Tu inclues dans une boucle la suite de calcul du CNP que t'a donné Cantador par un appel de fonction du genre : 
Function FCNP(n,p : Integer) : LongInt;
begin
   Result  := Trunc ( Factorielle(n) div ( Factorielle(p) * Factorielle(n-p) ) )
end;
Factorielle est également une fonction à écrire :
Function Factorielle(n : word): LongInt;
begin  if n > 1 then Result :n * factorielle(n-1) // la fonction s'appelle elle-même récursivité
              else Result := 1;
end;
Bon c'est peut être pas optimisé!
Cordialement

Jean_Jean
Commenter la réponse de cs_Jean_Jean
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
voilà un exemple donnant les combinaisons de 6 parmi 8 sur ton cas particulier :

PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR
  a, b, c, d, e, f: integer;
CONST
  NUM: ARRAY[0..7] OF integer = (0, 5, 7, 6, 3, 4, 1, 9);


BEGIN
  Memo1.Clear;
  FOR a := 0 TO (length(NUM) - 5) DO
    FOR b := a + 1 TO (length(NUM) - 4) DO
      FOR c := b + 1 TO (length(NUM) - 3) DO
        FOR d := c + 1 TO (length(NUM) - 2) DO
          FOR e := d + 1 TO (length(NUM) - 1) DO
            FOR f := e + 1 TO (length(NUM)- 1) DO


              Memo1.Lines.Add(intToStr(NUM[a]) + ';' + intToStr(NUM[b]) + ';' + intToStr(NUM[c]) + ';'
                + intToStr(NUM[d]) + ';' + intToStr(NUM[e]) + ';' + intToStr(NUM[f]));
END;

Tu peux répéter la même opération pour les autres types de combinaisons et tout mettre dans le même MEMO

cantador
Commenter la réponse de cs_cantador
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
0
Merci
@ Cantador


   Je suis pas sûr que ta fonction soit plus rapide en particulier sur des ensembles plus importants. ça serait intéressant de vérifier. En tout cas, elle est plus intuitive et donc plus compréhensible pour le débutant.
Cordialement

Jean_Jean
Commenter la réponse de cs_Jean_Jean
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
Donc je suis nouvelle programmeuse

@Jean_Jean
c'est tout à fait ça...

cantador
Commenter la réponse de cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
Tout n'est pas terminé, on n'en a fait qu'un tout petit bout...

Est ce que le père Noël va quand même passé ?

cantador
Commenter la réponse de cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
hou la belle faute..
Est ce que le père Noël va quand même passer ?

cantador
Commenter la réponse de cs_cantador
Messages postés
5
Date d'inscription
samedi 6 décembre 2008
Statut
Membre
Dernière intervention
14 décembre 2008
0
Merci
Je vous remercie mes chers.


Donc la partie de cantador me donne les cas sans  réptition, je veut qu'une combinaison soit aussi répetée .
Exple: (0,1,5)
resultats:
(0,1,5,00, 11, 55, 01,10,05,50,15,51,015,051,105,150,501, 510) comme ça.

Merci une autre fois mes chers amis
Bonne programmation. 
Commenter la réponse de Nina0770
Messages postés
5
Date d'inscription
samedi 6 décembre 2008
Statut
Membre
Dernière intervention
14 décembre 2008
0
Merci
peut etre le mot combinaison n'est pas bien placé donc je prefaire d'utilisé (le cas possible).
Merci une utre fois et j'attend vos interventions.
Salut
Commenter la réponse de Nina0770
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
Ce ne sont plus des combinaisons mais des arrangements :

An/p = n(n-1)(n-2).........(n-p+1)
ex : cas d'école le tiercé :
Arrangement de 3 parmi 20 partants :
20 x 19 x 18 = 6840 arrangements possibles de 3

Donc tu remplaces mes phrases par arrangements
arrangement de 2 parmi 8
arrangement de 3 parmi 8
etc etc..

je te laisse chercher comment les lister...

cantador
Commenter la réponse de cs_cantador
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
0
Merci
Bj nina!

Aux vues de ce que tu dis, c'est donc pas une Combinaison au sens mathématique des calculs du dénombrement que tu cherches. tu dois te poser 3 questions :
1. Peux-tu trouver des éléments répétés dans ton ensemble?
(0,5,7,6,3,4,1,9)
Les resultats: 0,5,7,6,3,4,1,9,05,07,06,......,057,056,053....,0576,0573,...........,05763419
Apparamment, dans ton listage Non (iln'y a pas de 055 par exemple), donc tu peux écarter les P_List
2. La place d'un élément dans ta liste sert-elle à différentier tes sorties?
Souhaites-tu obtenir en sortie les valeurs de liste : 025 et 052 par exemple?
Si Oui, alors tu as à traiter une Permutation ou un Arrangement dont les formules sont différentes de ce que je t'ai donné plus haut. 
Si Non, c'est donc que c'était bien une Combinaison. La combinaison n'accepte pas la répétition et donc peu importe que tes sorties soient (025) ou (205), les trois mêmes chiffres sont utilisés.
3. La troisième question est faite pour savoir si tu as à traiter une permutation ou un Arrangement. je pourrai te répondre quand tu auras éclairci ton problème!

J'aurai du Publier mon Tutorial réalisé sur les Dénombrements. Peut-être si les Administrateurs me le permettent, je pourrai envoyer des copies d'écran du Logiciel de démonstration qui n'est pas terminé. Ces copies pourraient se faire sous forme pdf et pourraient t'aider car je prend des exemple et des simulations pour chaque cas! Je vais leur poser la question. Car ils tellement chauds et excités sur le site que je vais me faire incendier si je publie des choses non terminées comme mes sources précédents!...

Bien à Toi.
Jean_Jean
Commenter la réponse de cs_Jean_Jean
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
0
Merci
Ah, je vois que cantador a été plus rapide!
Je pense qu'elle a effectivement un Arrangement à programmer, c'est à elle de confirmer.
Jean_Jean
Commenter la réponse de cs_Jean_Jean
Messages postés
5
Date d'inscription
samedi 6 décembre 2008
Statut
Membre
Dernière intervention
14 décembre 2008
0
Merci
Ohhh un grand merci, mes chers.


Ok, je ne sais ni combinaison, ni arrengement, ni permutation cr je ui pas mathematicienne, je fait de la sociologie et j'ai besoin a ce programme pour m'aider sur les enquetes et les sondages.


Jean, je t'explique c'est permet meme les repetitions de type (025, 205) et meme de type(000,222).


J'espere que vous pouvez me comprendre, mais promesse dès je termine cette partie je doit prendre les algorithmes,


et si vous voulez mon email:  [mailto:nina_0770@yahoo.fr nina_0770@yahoo.fr].

Merci Merci Merci Merci.........Merci.
Commenter la réponse de Nina0770
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
0
Merci
Bj



Si tu veux répéter les valeurs dans  ta liste (comme 000, 002, 022, 222 etc.) alors tu as une P_Liste et la Formule est :            
                             Nb = N P

N est ton ensemble de départ :  (0,5,7,6,3,4,1,9)
P est le nombre d'éléments mis ensemble : de 1 à 8



Donc Nb = 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 ce qui te fait déjà un bon nombre! 



La programmation n'est pas très compliqué :
- initialisation  des données (Tableau de départ T = [ 0,5,7,6,3,4,1,9 ])

- Pour n = 1 à 8
    Pour p = 1 à 8
       écrire (valeur = f(T)) à toi de réfléchir un peu!
    Fin p
 fin n
Ex : avec (0,5,7) : N = 3.         Nb 31+32+33 39 sorties = {(0),(5),(7), (00),(55),(77),(05),(50),(07),(70),(57),(75),(000),(055),(077),(057),(075),(005) ,(007),(050),(070),(555),(500),(577),(507),(570),(550),(557),(505),(575),(777),(700),(755),(705),(750),(770),(775),(707),(757)}


Bon code   
Jean_Jean
Commenter la réponse de cs_Jean_Jean
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
0
Merci
Nina, j'oubliai :
Si tu as des difficultés en programmation, il vaudrait peut-être mieux que tu cherches à faire tes analyses sous excel ou un freeware en stat
Cordialement
Jean_Jean
Commenter la réponse de cs_Jean_Jean
Messages postés
5
Date d'inscription
samedi 6 décembre 2008
Statut
Membre
Dernière intervention
14 décembre 2008
0
Merci
Merci Jean, tu fait bien l'enseignant.  


Donc je doit me casser la tete  pour trouver les lignes entre les deux (pour), et je t'envoi une réponse "trés sûre positive".


Merci une autre fois.


 
Commenter la réponse de Nina0770
Messages postés
47
Date d'inscription
samedi 27 novembre 2004
Statut
Membre
Dernière intervention
21 avril 2009
0
Merci
Salut,
Je croit que tu doit pensé à trois choses:
1- Le produit cartésien.
2- J'ai (0,1).
(0,1) * (0,1) ======> (00,01,10,11). Ce qui donne (0,1,00,01,10,11).
3- Pense aussi aux pointeurs.
Peut être tu peut trouvé la solution .

Blanc .
Commenter la réponse de cs_blanc76
Messages postés
47
Date d'inscription
samedi 27 novembre 2004
Statut
Membre
Dernière intervention
21 avril 2009
0
Merci
Attention !!!! il faut faire des testes de 3 nombres sinon ton programme termine l'exécution dans environ 2 jours. lollllll
tu es avec moi Jean_Jean ou non ?

Blanc
Commenter la réponse de cs_blanc76