Entwickler-Ecke

Sonstiges (Delphi) - Zahlen sortieren


ReddY - Do 02.11.06 17:54
Titel: Zahlen sortieren
Hiho.

Ich wollte ein Programm schreiben, was mir aus 10 Editfeldern zahlen in 10 verschiedene Listboxen sortiert. Problem: Bei der Listbos von 11-20 klappt das nicht. Wieso ? Hab den Code mal unten gepostet. Danke :9

Und: Wie würdet ihr das machen, wenn ihr in den Listboxen die Zahlen der Größe nach nochmal sortieren wolltet ? Hat wer ne Anregeung ? Danke


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:
procedure TForm1.Button1Click(Sender: TObject);
var z:array[1..10of integer;  //Bestimmung der Array - 10 Zahlen die sortier werden müssen
var i:integer;
begin

listbox1.items.Clear;
listbox2.items.Clear;
listbox3.items.Clear;
listbox4.items.Clear;
listbox5.items.Clear;
listbox6.items.Clear;
listbox7.items.Clear;
listbox8.items.Clear;
listbox9.items.Clear;
listbox10.items.Clear;

// Zuweisung der 10 Zahlen zu den jeweiligen EditFeldern
z[1]:=strtoint(edit1.text);
z[2]:=strtoint(edit2.text);
z[3]:=strtoint(edit3.text);
z[4]:=strtoint(edit4.text);
z[5]:=strtoint(edit5.text);
z[6]:=strtoint(edit6.text);
z[7]:=strtoint(edit7.text);
z[8]:=strtoint(edit8.text);
z[9]:=strtoint(edit9.text);
z[10]:=strtoint(edit10.text);

// Anfang der Schleife
for i:= 1 to 10 do
// 0 -10
if (z[i] >=0and (z[i] <=10then
begin
listBox1.Items.Add(IntToStr(z[i]));
end;
// 11-20
if (z[i] >10and (z[i] <=20then
begin
listbox2.items.add(inttostr(z[i]));
end;
end;


Moderiert von user profile iconjasocul: Quote-Tags durch Delphi-Tags ersetzt


mkinzler - Do 02.11.06 18:01

Ich würde das vereinfachen:


Delphi-Quelltext
1:
Form.FindComponent( 'ListBox'+IntToStr( Z[i] / DIV 10)+1as TListBox).add( ...                    


azubi_20 - Do 02.11.06 18:02
Titel: Re: Zahlen sortieren
user profile iconReddY hat folgendes geschrieben:
Bei der Listbos von 11-20 klappt das nicht.

wie äußert sich das ? (absturz, kein Eintrag ... )
was passiert wenn du mit einzelschritt durchgehst ?


ReddY - Do 02.11.06 18:05

na ja ... der trägt einfach nix ein!


azubi_20 - Do 02.11.06 18:07

ok hättest du dein Programm schrittweise mit dem Debugger durchgeführt, hättest du germerkt, dass die betreffende Stelle nicht innerhalb der Schleife liegt und daher nicht erreicht wird.
So müsste das richtig heißen :


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
// Anfang der Schleife
for i:= 1 to 10 do
begin
  // 0 -10
  if (z[i] >=0and (z[i] <=10then
  begin
  listBox1.Items.Add(IntToStr(z[i]));
  end;
  // 11-20
  if (z[i] >10and (z[i] <=20then
  begin
  listbox2.items.add(inttostr(z[i]));
  end;
end;
end;