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 !

Sujet : Comment calculer des combinaison [ Divers / Débutant(e) ] (Frank_klein)

jeudi 31 juillet 2008 à 12:15:48 | Comment calculer des combinaison

Frank_klein

Bonjour,

J'ai cherché sur le forum des exemples sur le calcul des combianaisons, mias sans succès, sur Google aussi, je n'ai trouvé que des exemples en visual basic, est il possible de faire des calculs de combinasion avec delphi, je conais la formule mathematique mais je n'arrive pas à l'appliquer dans le code. Si quelqu'un a une idée, je le remerci d'avance.

@+

jeudi 31 juillet 2008 à 13:19:55 | Re : Comment calculer des combinaison

Caribensila

Membre Club
Salut,

Ca devrait t'aider.

jeudi 31 juillet 2008 à 19:39:52 | Re : Comment calculer des combinaison

cantador

Membre Club

voilà un petit code que j'ai écrit et qui me sers dans mes jeux :

procedure TFMain.Button1Click(Sender: TObject);
var
  i, j, k, l, m, n, nnpg, nnds, sto: integer;
  COMBI: array[1..28] of string;
begin
  nnds := 8;
  sto := 0;
  ListBox1.Clear;
  for i := 1 to nnds do
    for j := i to nnds do
      for k := j to nnds do
        for l := k to nnds do
          for m := l to nnds do
            for n := m to nnds do
              if ((i <> j) and (i <> k) and (i <> l) and (i <> m) and (i <> n))
                and ((j <> i) and (j <> k) and (j <> l) and (j <> m) and (j <> n))
                and ((k <> i) and (k <> j) and (k <> l) and (k <> m) and (k <> n))
                and ((l <> i) and (l <> j) and (l <> k) and (l <> m) and (l <> n))
                and ((m <> i) and (m <> j) and (m <> k) and (m <> l) and (m <> n)) then
              begin
                sto := sto + 1;
                COMBI6[sto] := IntToStr(i) + ';' + IntToStr(j)
                  + ';' + IntToStr(k) + ';' + IntToStr(l)
                  + ';' + IntToStr(m) + ';' + IntToStr(n);

                ListBox1.Items.Add(COMBI6[sto]);
              end
              else
                continue;
end;

A adapter bien sûr..

cantador


jeudi 31 juillet 2008 à 20:21:56 | Re : Comment calculer des combinaison

Oniria

Bonjour,

moi, j'ai fait un petit programme plus universel  que voici:

unit test_choix;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var nombre : integer;
    tb,compt: array[0..10] of integer;

Function Choix(n,nb : integer): string;
var i,j,sortir,chiffre0 : integer;
    texte : string;
begin
     texte:='';
     chiffre0:=ord('0');
     for i:=0 to n-1 do tb[i]:=0; // On efface la réservation de la case
     if nb=0 then
        begin     // Si nb=0, on veut commencer au début
             for i:=0 to n-2 do compt[i]:=0; // On choisit la première solution
        end else
        begin     // nb<>0, on continu depuis la dernière valeur
             //On ajoute 1 au compteur
             j:=n-2;
             sortir:=0;
             repeat // Gestion de l'addition du compteur
                   compt[j]:=compt[j]+1;
                   if compt[j]>(n-1-j) then
                      begin
                           compt[j]:=0;
                           j:=j-1;
                      end else sortir:=1;
             until (j<0) or (sortir=1);
        end;
     // Sélection des nombres pour la sortie
     for i:=0 to n-2 do
         begin
              j:=0;
              sortir:=0;
              repeat
                    if Tb[j]=0 then sortir:=sortir+1;
                    j:=j+1;
              until (sortir-1)=compt[i]; // j-1 est le nombre choisit
              texte:=texte+chr(chiffre0+j);
              tb[j-1]:=1; // le chiffre à été choisit donc il ne sera plus repris
         end; // On vient de choisir les n-1 termes
     // On doit maintenant rechercher le seul qui n'a pas été utilisé
     i:=0;
     sortir:=0;
     repeat
           if tb[i]=0 then
              begin
                   texte:=texte+chr(chiffre0+i+1);
                   sortir:=1;
              end else i:=i+1;
     until sortir=1;
     Choix:=texte;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     Form1.Close;
end;

procedure TForm1.Button1Click(Sender: TObject);
var txt,txt1 : string;
begin
     nombre:=strToint(Form1.Edit1.Text);
     txt:=Choix(nombre,0);
     Form1.Memo1.Lines.Add(txt);
     repeat
           txt1:=choix(nombre,1);
           if txt1<>'' then Form1.Memo1.Lines.Add(txt1);
     until (txt=txt1) or (txt1='');
//     Form1.Memo1.Lines.Add('Terminé');
end;

end.

Voila , si ca peut t'aider .

Oniria

jeudi 31 juillet 2008 à 21:16:34 | Re : Comment calculer des combinaison

Frank_klein

je vais essayer de les  adapter, je vous tiendrais au courant, merci

jeudi 31 juillet 2008 à 21:27:22 | Re : Comment calculer des combinaison

cantador

Membre Club
@Oniria:
ton code fonctionne, mais il ne donne pas les combinaisons de
x éléments parmi n éléments mais :

Les arrangements de X éléments, ce qui est différent..
impec pour jouer au tiercé !

cantador

jeudi 31 juillet 2008 à 21:35:27 | Re : Comment calculer des combinaison

Oniria

Bonjour,

je crois que je  vais devoir retourner à l'école :) Moi et les stats, j'ai vraiment du mal à comprendre. Mais bon quand j'ai fait ce code, j'avais besoin d'un système qui me donne toutes les solutions uniques avec X éléments possibles sans savoir que c'était des combinaisons ou arrangement ou autres...

Désolé, si j'ai confondu les deux. Mais bon si ça peut servir.

Oniria

jeudi 31 juillet 2008 à 21:50:04 | Re : Comment calculer des combinaison

cantador

Membre Club

en fait, c'est simple, il y les combinaisons et les arrangements.
ex :
dans les combinaisons 4 parmi 4 cela donne 1 seule
ex: 1234
dans les arrangements,
il y en a : 4*3*2*1 = 24 arrangements possibles
tout dépend des besoins...
Je viens de voir qu'il y a même un un p'tit bug dans ton code car tu en trouves 25...(doublon 1234)

cantador


jeudi 31 juillet 2008 à 23:27:31 | Re : Comment calculer des combinaison

Caribensila

Membre Club
Moi, je suis comme Oniria. J'ai toujours eu des difficultés avec ces trucs.  :)))

La prochaine fois qu'on en aura besoin, on demandera à Cantador...

vendredi 1 août 2008 à 09:09:30 | Re : Comment calculer des combinaison

cantador

Membre Club
Tiens cari, voilà un lien :
http://rfv.insa-lyon.fr/~jolion/STAT/node4.html


Interrogation écrite dans 3 jours !!
 
... avant que les choses ne passent de Caribe en Sylla..

cantador


1 2 3

Cette discussion est classé dans : exemples, calculer, combinaison


Répondre à ce message

Sujets en rapport avec ce message

calculer le temps [ par bouiboui ] Je cherche un moyen de calculer le temps d'exécution d'une procedure en delphi, existe-t-il une fonction permettant de le faire ?(Un Timer est dispo d Calculer le crc d'un fichier [ par zorg63 ] Salut!Je voudrais savoir comment calculer le crc d'un fichier pour le comparer à une base de donnees. Comment ce calcul s'effectue-t-il?Merci d'avance Cherche exemples [ par jbob ] Bonsoir,Je voudrais me lancer dans laprogrammation de bases de données avec Mysql et delphi.Où pourrais-je trouver des exemples qui m'aiderait forteme Calculer la bande passante [ par Kane ] Comment peux t'on mesurer la bande passante de sa connection internet ?Merci bicoup ! Calculer la bande passante [ par Kane ] Savez comment je peux calculer la bande passante de mon PC ?Pouvez vous m'aider ?Merci Combinaison de touches vers fonction ou procédure ? [ par japee ] Quelqu'un peut-il me rappeler la combinaison de touches qui nous amène, dans l'éditeur de code, à partir de l'appel d'une fonction ou d'une procédure, Mettre à jour une DBGrid1 avec DBGrid2 [ par vdefer ] Je recherche des exemples pour faire une mise à jour d'une DBGrid à une autre, je sais que l'on utilise DataSet.voila ce que je souhaite faire:Je séle Application en background en attente d'une combinaison de touches [ par K0rr1gan ] Bonjour,Je cherche a créer une application se comportant plus ou moins comme un service, c'est a dire en exécution permanente, éventuellement sous for Comment calculer le nombre de mois séparant deux dates ? [ par Nefret ] Bonjour, j'aimerai savoir s'il existe un moyen de calculer le nombre de mois qui sépa Durée d'un mp3 [ par LuckyLuck ] Alors voilà, je voudrais simplement savoir comment calculer la durée en seconde d'un mp3, en vue de pouvoir calculer le CDDBID d'un album. Je ne deman


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.