AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei Sortieralgorithmus

Ein Thema von Master_BB · begonnen am 28. Jun 2004 · letzter Beitrag vom 29. Jun 2004
Antwort Antwort
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#1

Problem bei Sortieralgorithmus

  Alt 28. Jun 2004, 14:58
Hya,
ich hab derzeit ein Problem mit dem bubblesort algorithmus.
ich hatte ihn bisher in schon vielen Programmen in delphi umgesetzt aber gerade will er einfach nicht.
Das programm stürtzt ab wenn der algorithmus durchläuft. und ich finde den fehler einfach nicht.
hier der code:

Delphi-Quellcode:

Procedure TForm1.Tausch(a,b:KontaktType);
var c:kontakttype;
Begin
 c := a;
 a := b;
 b := c;
end;

Procedure TForm1.sortieren;
var i,dfs:integer;
    fertig:boolean;
    filename:string;
begin
 filename := ExtractFilePath(application.exename)+datafile;
 assignfile(df,filename);
 if fileexists(filename) then reset(df) else rewrite(df);
 for i := 1 to filesize(df) do
  begin
   read(df,kontakte[i]);
  end;
 dfs := filesize(df);
 
 repeat
  fertig := True;
  for i := 1 to dfs-1 do
   begin
    if kontakte[i].Name > kontakte[i+1].Name then
     begin
      tausch(kontakte[i],kontakte[i+1]);
      fertig := false;
     end;
   end;
 until fertig = true;

 seek(df,0);
 for i := 1 to dfs do
  begin
   write(df,kontakte[i]);
  end;
 closefile(df);
end;
ist zum sortieren von datensätzen aus einer typisierten datei.

Wäre echt cool wenn von euch einer den fehler entdecken würde muß weiter kommen.

Greetz
Master_BB
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problem bei Sortieralgorithmus

  Alt 28. Jun 2004, 15:29
Block ich net.

Was is KontaktType für eine Art Variable???

Und was is das:
filename := ExtractFilePath(application.exename)+datafile;

Wo wird datafile deklariert & definiert???

Das fehlt doch die Hälfte. Damit werden wohl wenig klarkommen...

Fragen wir mal so:
Du hast eine Datei in der folgende Zeilen stehen:

1
56
78
13443
2324
etc.

und die soll einfach sortiert werden? Sind da nur numerische oder auch alphanumerische Daten enthalten???
  Mit Zitat antworten Zitat
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#3

Re: Problem bei Sortieralgorithmus

  Alt 28. Jun 2004, 18:35
hm ich bin davon ausgegangen das das nicht benötigt wird da es an sich eindeutig ist das es funktioniert da speichern und laden läuft.
aber hier die deklarationen - kontakttype ist ein record

und das hier
filename := ExtractFilePath(application.exename)+datafile;
datafile ist die konstante und das davor gibt den pfad zurück wo sich die anwendung befindet.
das haut aber alles hin.

und da wir kontakte[i].name mit einander vergleichen werden strings sortiert nach a-z

Delphi-Quellcode:

type kontaktType = packed record
      Name :string[50];
      tele :string[20];
      handy:string[20];
      fax :string[20];
      adr :string[255];
end;

const ver = 'v0.5Beta';
      maxD = 1000;
      datafile = 'adressen.dat';

var df:file of kontakttype;
    kontakte:array[1..maxd]of kontakttype;
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Problem bei Sortieralgorithmus

  Alt 28. Jun 2004, 19:10
Dein Sort-Algorhytmus ist falsch aufgebaut.
Delphi-Quellcode:
repeat
  fertig := True;
  for i := 1 to dfs-1 do // bei einer Schleife ist nur sicher, dass das
   begin // größte Element ganz hinten steht
    if kontakte[i].Name > kontakte[i+1].Name then
     begin
      tausch(kontakte[i],kontakte[i+1]);
      fertig := false;
     end;
   end;
until fertig = true;
Schau mal hier. Da steht alles wichtige drin.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#5

Re: Problem bei Sortieralgorithmus

  Alt 29. Jun 2004, 21:00
hab den dummen fehler endlich gefunden.
der war soo dumm.

kukt mal in meine tausch procedure. dort wurde ein werteparameter verwendet
anstatt eines variablenparameters das ist der einzigste fehler.

so siehts richtig aus
Delphi-Quellcode:
Procedure TForm1.Tausch(VAR a,b:KontaktType);
var c:kontakttype;
Begin
c := a;
a := b;
b := c;
end;
komisch das das von euch keiner gesehen hat
  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 20:02 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