![]() |
Sortierer, hab ein sehr interessantes problem
Liste der Anhänge anzeigen (Anzahl: 1)
hi leute,
hier ein neues prog aus der Reihe "Programme, die die Welt nicht braucht": Es generiert zufällig zahlen in eine listbox, und gibt sie sortiert in einer anderen aus nebenbei kann man einstellen: wieviele zahlen und in welchem zahlenraum sie liegen es wird geloggt, wie lange man (man=computer) für was gebraucht hat alles kann in einer datei gespeichert werden soweit so gut, aber auf einmal (in dem moment, als ich alles in groupboxen getan hab) sponn es auf einmal: in der ersten listbox, war alles wunderbar aber in der zweiten (die sortierte) waren auf einmal immer ca. 50% der Elemente eine 66, wobei die liste weiterhin sortiert war. zudem fällt auf, das die anderen 50% aus den elementen bestehen, welche niedrig sind.... guckts euch mal an, bin dankbar für jeden lösungsvorschlag und jeden vorschlag zur vereinfachung (vereinfacherung? wie auch immer) des codes PS: ist in delphi 6 gemacht |
Re: Sortierer, hab ein sehr interessantes problem
kurzer Nachtrag:
das mit den 50 % war falsch, die liste besteht aus folgenden elementen: allen zahlen unter 66 oft die 66 und dann das erste element der unsortierten liste, wobei ich nicht weiss, was passiert, wenn dieses unter 66 ist... (noch nicht getestet) |
Re: Sortierer, hab ein sehr interessantes problem
Hallo,
Also ich habe mir dein Programm mal angesehen und den Fehler auch gefunden : Für jede Zahl die du "in die Hand nimmst" musst du auch alle Elemente durchgehen, am besten auch von vorne nach hinten. Deine for-Schleife
Delphi-Quellcode:
ergibt eigentlich recht wenig Senn denn i-i ist immer 0
for j:=N downto i-i do
schreibe die for-Schleife also einfach so :
Delphi-Quellcode:
und es funktioniert wunderbar.
for j:=1 to N-1 do
Ach noch was. Wenn du mit vielen Zahlen arbeiten würdest dann braucht dein Programm eine ganze Weile, weil es die Listen immer neuzeichnet. Besser ist es mit BeginUpdate und Endupdate. Zum Beispiel bei deinem Zahlen ausrechnen würde das folgendermaßen aussehen :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer; begin randomize; setlength(data, N+1); ListBox1.Clear; ListBox1.Items.BeginUpdate; // Zeichnet die Liste nicht immer neu for i:=1 to N do begin data[i] := random(raum-1); // "+1" weg, sonst stimmt deine Angabe "Zahlenraum, 0-" nicht :o) ListBox1.Items.Add(inttostr(data[i])); end; ListBox1.Items.EndUpdate; // schliesst Update ab, jetzt erst wird die Liste neu gezeichnet end; Herzliche Grüße Urba |
Re: Sortierer, hab ein sehr interessantes problem
ähmmm, stand da wirklich "i-i"????? :wall: :wall: :wall:
ich mein da hätte N-i gestanden.... naja... und zu den vielen zahlen... was heisst viel?? ich mein nur, bei 100.000 brauch das schon satte 3- sogar 5 sek... aber guter tip :thuimb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz