Programme de maths Aider moi SVP.....

Nina0770 Messages postés 5 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 14 décembre 2008 - 6 déc. 2008 à 22:29
cs_blanc76 Messages postés 42 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.

18 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
7 déc. 2008 à 00:26
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
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
7 déc. 2008 à 07:21
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 déc. 2008 à 16:56
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
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
8 déc. 2008 à 23:34
@ 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 déc. 2008 à 12:26
Donc je suis nouvelle programmeuse

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

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 déc. 2008 à 17:42
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 déc. 2008 à 17:44
hou la belle faute..
Est ce que le père Noël va quand même passer ?

cantador
0
Nina0770 Messages postés 5 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 14 décembre 2008
10 déc. 2008 à 16:30
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. 
0
Nina0770 Messages postés 5 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 14 décembre 2008
10 déc. 2008 à 16:39
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
10 déc. 2008 à 17:04
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
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
10 déc. 2008 à 17:16
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
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
10 déc. 2008 à 17:18
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
0
Nina0770 Messages postés 5 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 14 décembre 2008
13 déc. 2008 à 07:31
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.
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
13 déc. 2008 à 11:55
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
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
13 déc. 2008 à 11:57
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
0
Nina0770 Messages postés 5 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 14 décembre 2008
14 déc. 2008 à 16:32
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.


 
0
cs_blanc76 Messages postés 42 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 21 avril 2009
29 déc. 2008 à 23:41
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 .
0
cs_blanc76 Messages postés 42 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 21 avril 2009
29 déc. 2008 à 23:44
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
0
Rejoignez-nous