Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!! (https://www.delphipraxis.net/57463-brauch-hilfe-zum-thema-sortieralgorithmus-dringend.html)

Jacqybaby 21. Nov 2005 19:58


brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo,

ích bin neu hier also bitte nicht gleich meckern wenn ich was falsch mache oder was nicht verstehe.
Ich bin noch dazu ein totaler Anfänger in sachen programmieren. Wir haben in der Schule die Aufgabe bekommen ein Projekt in Delphi zu programmieren in dem der Nutzer zw. den verschiedenen Sortierverfahren wählen kann. Ich bin gerade dabei die Minimum- bzw. Maximumsuche zu schaffen d.h., dass das kleinste Element gleich an den Anfang gesetzt wird, den Algorithmus dazu hab schon nur mit dem Anzeigen klappt es nicht. Dazu muss man wissen das der Nutzer eine beliebige Zahl für Anzahl der Elemente eintippen kann und dannach werden der Anzahl enstprechende Zufallszahlen gezogen die dann sortiert werden sollen. Das mit den Zahlen ziehen funktioniert, wenn ich aber auf den Button "sortieren" klicke bekommen ich nur Nullen angezeigt und ich weiß nicht woran es liegt.

Ihc wäre euch sehr verbunden wenn das auch mit einfachen befehlen geht, wir hatten nämlich noch nicht sehr viel Befehle und ich möchte nicht das es dann heißt ich habe das irgendwo geklaut.

MFG Jacqybaby

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Home: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    PageControl1: TPageControl;
    TabSheet4: TTabSheet;
    TabSheet5: TTabSheet;
    PageControl2: TPageControl;
    TabSheet6: TTabSheet;
    TabSheet7: TTabSheet;
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Label4: TLabel;
    Edit2: TEdit;
    Label5: TLabel;
    Edit3: TEdit;
    Label6: TLabel;
    Edit4: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    zufall: TListBox;
    zufall1: TListBox;
    zufall3: TListBox;
    zufall2: TListBox;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    sortiert: TListBox;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    ListBox2: TListBox;
    Label29: TLabel;
    Label30: TLabel;
    ListBox3: TListBox;
    Label31: TLabel;
    Label32: TLabel;
    ListBox4: TListBox;
    Label33: TLabel;
    Edit5: TEdit;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;
    Edit6: TEdit;
    Label38: TLabel;
    Label39: TLabel;
    Label40: TLabel;
    Edit7: TEdit;
    Label41: TLabel;
    Label42: TLabel;
    Label43: TLabel;
    Edit8: TEdit;
    Label44: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button6Click(Sender: TObject);
var z,a,i:integer;
begin
randomize;
a:=strtoint(edit1.Text);
    for i:=1 to a do
    begin
    z:=random(100);
    zufall.Items.Add(inttostr(z));
    end;
end;

procedure TForm1.Button9Click(Sender: TObject);
var z,a,i:integer;
begin
randomize;
a:=strtoint(edit2.Text);
    for i:=1 to a do
    begin
    z:=random(100);
    zufall1.Items.Add(inttostr(z));
    end;
end;


procedure TForm1.Button11Click(Sender: TObject);
var z,a,i:integer;
begin
randomize;
a:=strtoint(edit3.Text);
    for i:=1 to a do
    begin
    z:=random(100);
    zufall2.Items.Add(inttostr(z));
    end;
end;

procedure zufall(n:integer; var z:integer);
var i:integer;
begin
randomize;

z:=random(100);

end;

procedure TForm1.Button13Click(Sender: TObject);
var z,n,i:integer;
begin
n:=strtoint(edit1.Text);
for i:=1 to n do
begin
zufall.Items.Add(inttostr(z));
end;
end;
procedure TForm1.Button17Click(Sender: TObject);
begin
zufall.Items.Clear;
edit1.Text:='';
sortiert.Items.Clear;
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
zufall1.Items.Clear;
edit2.Text:='';

end;

procedure minimumsuche(n:integer; var h:array of integer);
var    i,j,min,hilfsvar:integer;
begin
for i:=1 to n-1 do
begin
min:=1;
       for j:=i+1 to n do
             if h[j]<min then min:=j;
             hilfsvar:=h[min];
             h[min]:=h[i];
             h[i]:=hilfsvar;
       end;


end;

procedure TForm1.Button7Click(Sender: TObject); {"sortieren"-Button}
var n,i:integer;
    h:array[0..10000] of integer;
begin
n:=strtoint(edit1.Text);
minimumsuche(n,h);
for i:=1 to n do
    begin
    sortiert.Items.Add(inttostr(h[i]));
    end;
end;

end.
Falls ihr noch irgendwelche Dateien aus dem Projekt braucht bescheid sagen ich hänge die dann an !!!

neuronet 21. Nov 2005 20:55

Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zuerst mal herzlich Willkommen in der DelphiPraxis, Jacqybaby!!!!


So, hab mal dran rumgeschraubt und nun funktioniert das Ganze.

Schau es Dir mal an, und wenn Du noch fragen hast, dann melde Dich...

Jacqybaby 21. Nov 2005 21:06

Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
 
ja super funktioniert, nur leider versteh ich jetzt garnichts mehr, wie gesagt ich bin nen totaler Anfänger und die meisten behfehle kenne ich nicht, wenn das meine Lehrerin sieht merkt die gleich das ich das nicht gemacht habe. Mir würde es mehr helfen wenn du mir sagst was ich falsch gemacht hab. Ihc hab in der Zwischenzeit auch ein bisschen weiter gemacht und das einzige problem ist das ich nicht weiß wie ich das array h inklusive der zugeordneten Zufallszahlen von einer Prozedur in eine andere übertragen kann.

MFG Jacqybaby

neuronet 21. Nov 2005 21:12

Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
 
Definiere das Array nicht in der Prozedur, sondern im "Interface" Teil oder direkt nach "implementation", dann kannst Du es von jeder Prozedur aus abrufen und bearbeiten.

malo 21. Nov 2005 21:15

Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
 
Zitat:

Zitat von Jacqybaby
Ihc hab in der Zwischenzeit auch ein bisschen weiter gemacht und das einzige problem ist das ich nicht weiß wie ich das array h inklusive der zugeordneten Zufallszahlen von einer Prozedur in eine andere übertragen kann.

Mit Parametern, denke ich mal. So:
Delphi-Quellcode:
procedure bekomme(h: array of integer);
begin
  h[5] := 123456;
end;

procedure uebertrage(h: array of integer);
begin
  bekomme(h);
end;
Oder was meinst du?


Oder so wie neuronet...

neuronet 21. Nov 2005 21:24

Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
 
Bevor ich es vergesse:

Du solltest vor dem Generieren der Zufallszahlen auf jeden Fall prüfen, ob edit1 überhaupt einen gültigen Wert enhält, sonst verabschiedet sich das Programm...

Jacqybaby 21. Nov 2005 21:25

Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
 
in einer Prozedur ziehe ich Zufallszahlen und weise diese den Feldern zu
Delphi-Quellcode:
procedure TForm1.prozufall(n:integer; var h:array of integer);
var i,z:integer;
begin
randomize;
for i:=1 to n do
begin
z:=random(100);
h[i]:=z;
end;


end;

procedure TForm1.Button13Click(Sender: TObject);
var n,i:integer;
    h:array[0..10000] of integer;
begin
n:=strtoint(edit1.Text);
for i:=1 to n do
begin
prozufall(n,h);
zufall.Items.Add(inttostr(h[i]));
end;
end;
so und nun muss ja mit den elementen des Arrays gearbeitet werden

Delphi-Quellcode:
procedure TForm1.minimumsuche(n:integer; var h:array of integer);
var    i,j,min,hilfsvar:integer;
begin
for i:=1 to n-1 do
begin
min:=1;
       for j:=i+1 to n do
             if (h[j]<min) then min:=j;
             hilfsvar:=h[min];
             h[min]:=h[i];
             h[i]:=hilfsvar;
       end;


end;
ich glaube hier liegt der fehler, weil ich nacher wenn ich das sortierte array in einer Listbox ausgeben will dann werden statt den geordneten Zahlen nur Nullen angezeigt.

Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var n,i:integer;
    h:array[0..10000] of integer;
begin
n:=strtoint(edit1.Text);
minimumsuche(n,h);
for i:=1 to n do
begin
    sortiert.Items.Add(inttostr(h[i]));
    end;
end;
^
^
So versuche ich das sortierte array anzeigen zu lassen aber wie gesagt kommen nur Nullen.

MFG Jacqybaby

neuronet 21. Nov 2005 21:34

Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
 
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var n,i:integer;
    h:array[0..10000] of integer;
begin
  n:=strtoint(edit1.Text);
  minimumsuche(n,h);
  for i:=1 to n do
  begin
    sortiert.Items.Add(inttostr(h[i]));
  end;
end;
So definierst Du das Array ja neu, anstatt es zu übernehmen, demnach ist es ja leer.

Wenn dann müsste es eher so aussehen:

Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var n,i:integer;
    h:array[0..10000] of integer;
begin
  n:=strtoint(edit1.Text);
  // hier die Zahlen aus zufall in h einlesen
  for i:=1 to zufall.count do
    h[i]:=strtoint(zufall.items[i]);
  // nun hast Du Deine Zufallszahlen in h und kannst damit weiterarbeiten
  minimumsuche(n,h);
  for i:=1 to n do
  begin
    sortiert.Items.Add(inttostr(h[i]));
  end;
end;

Jacqybaby 21. Nov 2005 21:39

Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
 
hat sich erledigt, ich hab falsch geguckt

MFG Jacqybaby

Jacqybaby 21. Nov 2005 21:57

Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
 
wenn ich deinen Quellcode einfüge bekomme ich folgenden Fehler angezeigt.


Was tun ?

MFG Jacqybaby


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.
Seite 1 von 2  1 2      

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