AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Sortierer, hab ein sehr interessantes problem
Thema durchsuchen
Ansicht
Themen-Optionen

Sortierer, hab ein sehr interessantes problem

Ein Thema von glkgereon · begonnen am 9. Apr 2004 · letzter Beitrag vom 12. Apr 2004
Antwort Antwort
Benutzerbild von glkgereon
glkgereon
Registriert seit: 16. Mär 2004
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
Angehängte Dateien
Dateityp: rar sortieren_sources.rar (244,7 KB, 17x aufgerufen)
»Unlösbare Probleme sind in der Regel schwierig...«
 
Benutzerbild von glkgereon
glkgereon
 
#2
  Alt 9. Apr 2004, 18:54
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)
  Mit Zitat antworten Zitat
Urba

 
Delphi 6 Personal
 
#3
  Alt 10. Apr 2004, 20:44
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

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 :

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
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon
 
#4
  Alt 12. Apr 2004, 19:55
ähmmm, stand da wirklich "i-i"?????
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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