Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Sortierer, hab ein sehr interessantes problem (https://www.delphipraxis.net/19835-sortierer-hab-ein-sehr-interessantes-problem.html)

glkgereon 9. Apr 2004 17:54


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

glkgereon 9. Apr 2004 18:54

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)

Urba 10. Apr 2004 20:44

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:
for j:=N downto i-i do
ergibt eigentlich recht wenig Senn denn i-i ist immer 0

schreibe die for-Schleife also einfach so :

Delphi-Quellcode:
for j:=1 to N-1 do
und es funktioniert wunderbar.


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

glkgereon 12. Apr 2004 19:55

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 06:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz