![]() |
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:
Falls ihr noch irgendwelche Dateien aus dem Projekt braucht bescheid sagen ich hänge die dann an !!!
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. |
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... |
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 |
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.
|
Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
Zitat:
Delphi-Quellcode:
Oder was meinst du?
procedure bekomme(h: array of integer);
begin h[5] := 123456; end; procedure uebertrage(h: array of integer); begin bekomme(h); end; Oder so wie neuronet... |
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... |
Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
in einer Prozedur ziehe ich Zufallszahlen und weise diese den Feldern zu
Delphi-Quellcode:
so und nun muss ja mit den elementen des Arrays gearbeitet werden
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;
Delphi-Quellcode:
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.
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;
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 |
Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
Delphi-Quellcode:
So definierst Du das Array ja neu, anstatt es zu übernehmen, demnach ist es ja leer.
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; 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; |
Re: brauch hilfe zum Thema Sortieralgorithmus !!!Dringend!!!
hat sich erledigt, ich hab falsch geguckt
MFG Jacqybaby |
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 04:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz