Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Fragen zu Zähler?


jackie05 - Do 17.09.09 20:12
Titel: Fragen zu Zähler?
Hallo,
ich habe ein Programm geschrieben, mit dem man bei bestimmte größe von Feldern, die gesamte Zahlenkombinationen berechnen kann.
z.B. wie bei einem Lotto schein 6 aus 49, beispielsweise möchte ich das ganze erstmal 3 aus 25 machen, also, ich möchte die gesamte Zahlenkombinationen die möglich sind, in Memo1 eintragen.

Hier mal ein beispiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
1 2 3
1 2 4
1 2 5
1 2 6
1 2 7
1 2 8
1 2 9
1 2 10
1 2 11
1 2 12
1 2 13
1 2 14
1 2 15
1 2 16
1 2 17
1 2 18
1 2 19
1 2 20
1 2 21
1 2 22
1 2 23
1 2 24
1 2 25
1 3 4
1 3 5
1 3 6
1 3 7
1 3 8
.....
.....
.....
.....
.....
23 24 25


Jede Zahl wird in einem Array gespeichert:

Delphi-Quelltext
1:
2:
3:
4:
//Beispiel: 3 aus 25, also die Zahl 1, 2 und 3 erstmal in diesem Array speichern, da es 3 verschiedene Zahlen sind
for i:=0 to SpinEdit3.Value-1 do begin
  Zahlen[i].Zahl := i+1;
end;


und so habe ich es versucht die Zahlenkombinationen in Memo1 einzutragen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
for i:=0 to SpinEdit3.Value-1 do begin
    if (Zahlen[High(Zahlen)-i].Zahl > (SpinEdit1.Value*SpinEdit2.Value)) then
    begin   
      Zahlen[High(Zahlen)-i].Zahl := Zahlen[High(Zahlen)-i-1].Zahl + 2;
      Zahlen[High(Zahlen)-i-1].Zahl := Zahlen[High(Zahlen)-i-1].Zahl + 1;
    end;
    Z := Z + IntToStr(Zahlen[i].Zahl)+' ';
    Label5.Caption := 'Anzahl: '+IntToStr(Memo1.Lines.Count+1);
  end;
  Memo1.Lines.Add(Z);
  Zahlen[High(Zahlen)].Zahl := Zahlen[High(Zahlen)].Zahl + 1;


Das klappt nicht so ganz.
Gibt es vielleicht einen besseren Weg?

Danke schonmal.

Edit: Bei 2 Zahlen also 2 aus 25 funktioniert es, aber wenn es mehr wie 2 Zahlen sind, dann funktioniert das nicht korrekt.
Ich habe mal 2 Bilder im anhang hochgeladen.
Das erste ist korrekt und das 2te ist nicht korrekt.

MfG