AGB  ·  Datenschutz  ·  Impressum  







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

programmfehler bei selectionsort

Ein Thema von ichtyp · begonnen am 12. Nov 2007 · letzter Beitrag vom 12. Nov 2007
 
ichtyp

Registriert seit: 12. Nov 2007
3 Beiträge
 
#1

programmfehler bei selectionsort

  Alt 12. Nov 2007, 16:36
hiho
ich soll ein programm schreiben welches die geschwindigkeit von sortieralgorythmen vergleicht.
bis jetzt bin ich am teil von selection sort.
das programm bringt, wenn ichs so starte, immer den folgenden fehler :

Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project2.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004529AA in Modul 'Project2.exe'. Lesen von Adresse 00D88000'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK  Hilfe  
---------------------------
glaube das liegt daran, das man das selectionsort mehrmals hinterinander laufen lässt. aber warum genau ?


wenn ich was vergesssen hab zu erwähnen dann sagt bitte bescheid, wollte nicht 3 seiten text posten

danke schonmal ! lg ichtyp



Delphi-Quellcode:
var
  Form1: TForm1;
  schritte, anzahl:integer; // die editfelder variablen
  c,t1,t2:tLargeInteger; // für die zeitmessung
  time: extended;
  x: array of integer;
  a,b,tmp:integer; // tausch procedur variablen

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize; // "würfeln"
queryperformancefrequency(c); // aktuelle zeit holen
memo1.Lines.clear; // memofelder leeren
memo2.Lines.clear;
memo3.Lines.clear;
memo4.Lines.clear;
memo5.Lines.clear;
memo6.lines.Clear;

end;



// ------ Selection sort ----------------------------//
procedure TForm1.Button1Click(Sender: TObject);
var h,i,j,k,t :integer;
begin
  memo5.Lines.clear;
  memo6.lines.Clear;
  anzahl:=strtoint(edit1.text); // variablen einlesen
  schritte:=strtoint(edit2.text);
  setlength (x, anzahl); // array länge zuweisen
  for i:=1 to anzahl do begin x[i]:=random(anzahl)+1 end;// das array befüllen mit zufallswerten
if checkbox1.Checked then // wenn checkbox an , dann zahlen ausgeben
    begin
     for i:=1 to anzahl do memo5.lines.add(inttostr(x[i]))
    end;



for h:=1 to schritte do
begin anzahl:=anzahl*i;
       queryperformancecounter(t1); // Zeitmessung start !

 for k:=1 to anzahl do
  begin
   for j:= k+1 to anzahl do begin
    if x[j] < x[k] then begin
    t:=x[j]; x[j]:=x[k]; x[k]:=t; end
    end
   end ;

 if checkbox1.Checked then // wenn checkbox an , dann zahlen ausgeben (sortiert, im feld daneben)
    begin
     for i:=1 to anzahl do memo6.lines.add(inttostr(x[i]))
    end;



queryperformancecounter(t2); // Zeitmessung stop !
 time:=(t2-t1)/c ;
memo1.lines.add(floattostr(time));

end;




end;
// ===================================================== //
  Mit Zitat antworten Zitat
 


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 00:30 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