Autor Beitrag
Greek
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: So 14.06.09 22:09 
Hallo,
Das ist der Array mit den Schülern
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
  Schueler[0]:='Lukas';
  Schueler[1]:='Moritz';
  Schueler[2]:='Johann';
  Schueler[3]:='Leonie';
  Schueler[4]:='Daniel';
  Schueler[5]:='Lara';
  Schueler[6]:='Nadine';
  Schueler[7]:='Erich';
  Schueler[8]:='Vera';
  Schueler[9]:='Claudia';
  Schueler[10]:='Ralf';
  Schueler[11]:='Stefan';


Hier die Procedure zum Mannschaft bilden:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure mannschaftbilden;
var Rschueler : string;
begin
  Rschueler:=Schueler[Random(12)];
  Showmessage(Rschueler);
end;


Wie verhindere ich das jetzt z.B. 2 mal Daniel kommt?


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am So 14.06.2009 um 22:43
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19345
Erhaltene Danke: 1753

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 14.06.09 22:13 
Indem du einfach mischst und dann die ersten n Einträge nimmst.
www.delphi-library.d...iewtopic.php?t=71713
Greek Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: So 14.06.09 22:20 
Hm versteh ich nicht, wie wende ich das an?

Hier mal alles: ( Ist ne Hausaufgabe bis morgen )

ausblenden volle Höhe 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:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
unit UebungU1;

interface

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

type
  TForm1 = class(TForm)
    a_Ausgabe: TButton;
    BitBtn1: TBitBtn;
    Memo1: TMemo;
    b_aufruecken: TButton;
    c_spiegeln: TButton;
    d_mannschaftenBilden: TButton;
    e_abzaehlen: TButton;
    procedure a_AusgabeClick(Sender: TObject);
    procedure b_aufrueckenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure c_spiegelnClick(Sender: TObject);
    procedure d_mannschaftenBildenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Schueler: array[0..12of string;
  Buffer: array[0..12of string;

implementation

{$R *.DFM}

{procedure ShuffleFisherYates(var aArray: TArray);
  var 
    i,j: Integer; 
    tmp: TArrayElement; 
begin
  for i := Low(aArray) to High(aArray) do begin
    j := i +Random(Length(aArray) -i);
    tmp := aArray[j]; 
    aArray[j] := aArray[i]; 
    aArray[i] := tmp; 
  end; 
end;}


procedure mannschaftbilden;
var Rschueler : string;
begin
  Rschueler:=Schueler[Random(12)];
  Showmessage(Rschueler);
  //Rschueler:=ShuffleFisherYates(Schueler);
  //Showmessage(Rschueler);
end;

procedure ausgabe;
var i:integer;
begin
  Form1.Memo1.Clear;
  For i:=0 to 11 do begin
    Form1.Memo1.Lines.add(Schueler[i]);
  end;
end;

procedure aufruecken;
var i:integer;
begin
  For i:=12 downto 0 do begin
    Schueler[i]:=Schueler[i-1];
    If (i<=0then Schueler[0]:=Schueler[12];
  end;
  ausgabe;
end;


procedure TForm1.a_AusgabeClick(Sender: TObject);
begin
  ausgabe;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Schueler[0]:='Lukas';
  Schueler[1]:='Moritz';
  Schueler[2]:='Johann';
  Schueler[3]:='Leonie';
  Schueler[4]:='Daniel';
  Schueler[5]:='Lara';
  Schueler[6]:='Nadine';
  Schueler[7]:='Erich';
  Schueler[8]:='Vera';
  Schueler[9]:='Claudia';
  Schueler[10]:='Ralf';
  Schueler[11]:='Stefan';
end;

procedure TForm1.b_aufrueckenClick(Sender: TObject);
begin
  Aufruecken;
  ausgabe;
end;

procedure TForm1.c_spiegelnClick(Sender: TObject);
  var i:integer;
begin
  For i:=0 to 11 do begin
  Buffer[11-i]:=Schueler[0+i];
  end;
  For i:=0 to 11 do begin
  Schueler[i]:=Buffer[i];
  end;
  ausgabe;
end;

procedure TForm1.d_mannschaftenBildenClick(Sender: TObject);
begin
  mannschaftbilden;
end;

end.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19345
Erhaltene Danke: 1753

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 14.06.09 22:25 
Du rufst einmal die Prozedur auf und mischst damit den Inhalt. Danach stehen dann am Anfang zufällige Einträge. Und jetzt kannst du z.B. die ersten 3 nehmen und das sind zufällige 3 aus dem Array.

Alternative: Du löschst die schon benutzten...
Greek Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: So 14.06.09 22:31 
Ah jetzt hab ichs verstanden :D

Aber wie bring ich die Shuffle funktion zum laufen :?:

ausblenden volle Höhe 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:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
unit UebungU1;

interface

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

type
  TArrayElement = Integer; 


  TArray = array of TArrayElement;
  TForm1 = class(TForm)
    a_Ausgabe: TButton;
    BitBtn1: TBitBtn;
    Memo1: TMemo;
    b_aufruecken: TButton;
    c_spiegeln: TButton;
    d_mannschaftenBilden: TButton;
    e_abzaehlen: TButton;
    procedure a_AusgabeClick(Sender: TObject);
    procedure b_aufrueckenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure c_spiegelnClick(Sender: TObject);
    procedure d_mannschaftenBildenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Schueler: array[0..12of string;
  Buffer: array[0..12of string;

implementation

{$R *.DFM}

procedure ShuffleFisherYates(var aArray: TArray);
  var 
    i,j: Integer; 
    tmp: TArrayElement;
begin
  for i := Low(aArray) to High(aArray) do begin
    j := i +Random(Length(aArray) -i);
    tmp := aArray[j]; 
    aArray[j] := aArray[i]; 
    aArray[i] := tmp; 
  end
end;

procedure mannschaftbilden;
var Rschueler : string;
begin
  Rschueler:=Schueler[Random(12)];
  Showmessage(Rschueler);
  //Rschueler:=ShuffleFisherYates(Schueler);
  //Showmessage(Rschueler);
end;

procedure ausgabe;
var i:integer;
begin
  Form1.Memo1.Clear;
  For i:=0 to 11 do begin
    Form1.Memo1.Lines.add(Schueler[i]);
  end;
end;

procedure aufruecken;
var i:integer;
begin
  For i:=12 downto 0 do begin
    Schueler[i]:=Schueler[i-1];
    If (i<=0then Schueler[0]:=Schueler[12];
  end;
  ausgabe;
end;


procedure TForm1.a_AusgabeClick(Sender: TObject);
begin
  ausgabe;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Schueler[0]:='Lukas';
  Schueler[1]:='Moritz';
  Schueler[2]:='Johann';
  Schueler[3]:='Leonie';
  Schueler[4]:='Daniel';
  Schueler[5]:='Lara';
  Schueler[6]:='Nadine';
  Schueler[7]:='Erich';
  Schueler[8]:='Vera';
  Schueler[9]:='Claudia';
  Schueler[10]:='Ralf';
  Schueler[11]:='Stefan';
end;

procedure TForm1.b_aufrueckenClick(Sender: TObject);
begin
  Aufruecken;
  ausgabe;
end;

procedure TForm1.c_spiegelnClick(Sender: TObject);
  var i:integer;
begin
  For i:=0 to 11 do begin
  Buffer[11-i]:=Schueler[0+i];
  end;
  For i:=0 to 11 do begin
  Schueler[i]:=Buffer[i];
  end;
  ausgabe;
end;

procedure TForm1.d_mannschaftenBildenClick(Sender: TObject);
begin
  mannschaftbilden;
end;

end.


---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Ich hab selber hingegrigt =)

Einfach noch ne procedure mischen; geschrieben, danke dir, ohne dich wär mir nie eingefallen das ich sie ja nur mischen muss ! :)

So hab ichs jetzt gemacht

ausblenden volle Höhe 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:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
unit UebungU1;

interface

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

type
  TForm1 = class(TForm)
    a_Ausgabe: TButton;
    BitBtn1: TBitBtn;
    Memo1: TMemo;
    b_aufruecken: TButton;
    c_spiegeln: TButton;
    d_mannschaftenBilden: TButton;
    e_abzaehlen: TButton;
    procedure a_AusgabeClick(Sender: TObject);
    procedure b_aufrueckenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure c_spiegelnClick(Sender: TObject);
    procedure d_mannschaftenBildenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Schueler: array[0..12of string;
  Buffer: array[0..12of string;

implementation

{$R *.DFM}

{procedure ShuffleFisherYates(var aArray: TArray);
  var 
    i,j: Integer; 
    tmp: TArrayElement;
begin
  for i := Low(aArray) to High(aArray) do begin
    j := i +Random(Length(aArray) -i);
    tmp := aArray[j]; 
    aArray[j] := aArray[i]; 
    aArray[i] := tmp; 
  end; 
end;}

procedure ausgabe;
var i:integer;
begin
  Form1.Memo1.Clear;
  For i:=0 to 11 do begin
    Form1.Memo1.Lines.add(Schueler[i]);
  end;
end;

procedure aufruecken;
var i:integer;
begin
  For i:=12 downto 0 do begin
    Schueler[i]:=Schueler[i-1];
    If (i<=0then Schueler[0]:=Schueler[12];
  end;
  ausgabe;
end;

procedure spiegeln;
var i:integer;
begin
  For i:=0 to 11 do begin
  Buffer[11-i]:=Schueler[0+i];
  end;
  For i:=0 to 11 do begin
  Schueler[i]:=Buffer[i];
  end;
end;

procedure mischen;
var i,j :integer;
begin
  j:=Random(5);
  For i:=0 to j do begin
  Aufruecken;
  end;
end;

procedure mannschaftbilden;
var Rschueler : string;
    i         : integer;
begin
  mischen;
  Form1.Memo1.Clear;
  Form1.Memo1.Lines.add(' ');
  Form1.Memo1.Lines.add('Mannschaft 1 ');
  Form1.Memo1.Lines.add('--------------------');
  For i:=0 to 5 do begin
    Form1.Memo1.Lines.add(Schueler[i]);
  end;
  Form1.Memo1.Lines.add(' ');
  Form1.Memo1.Lines.add('Mannschaft 2 ');
  Form1.Memo1.Lines.add('--------------------');
  For i:=5 to 11 do begin
    Form1.Memo1.Lines.add(Schueler[i]);
  end;
end;



procedure TForm1.a_AusgabeClick(Sender: TObject);
begin
  ausgabe;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Schueler[0]:='Lukas';
  Schueler[1]:='Moritz';
  Schueler[2]:='Johann';
  Schueler[3]:='Leonie';
  Schueler[4]:='Daniel';
  Schueler[5]:='Lara';
  Schueler[6]:='Nadine';
  Schueler[7]:='Erich';
  Schueler[8]:='Vera';
  Schueler[9]:='Claudia';
  Schueler[10]:='Ralf';
  Schueler[11]:='Stefan';
end;

procedure TForm1.b_aufrueckenClick(Sender: TObject);
begin
  Aufruecken;
  ausgabe;
end;

procedure TForm1.c_spiegelnClick(Sender: TObject);
begin
  spiegeln;
  ausgabe;
end;

procedure TForm1.d_mannschaftenBildenClick(Sender: TObject);
begin
  mannschaftbilden;
end;

end.