![]() |
Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse
Die Zahlen packst Du doch in das Array welches sortiert wird:
Delphi-Quellcode:
Grüße
const
maxAnzahl = 4; type ZahlenArray = Array [0..maxAnzahl-1] of Integer; var meineZahlen: ZahlenArray; meineZahlen[0]:=StrToInt(Edit1.Text); meineZahlen[1]:=StrToInt(Edit2.Text); meineZahlen[2]:=StrToInt(Edit3.Text); meineZahlen[3]:=StrToInt(Edit4.Text); Klaus |
Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse
Delphi-Quellcode:
Sind das dann bei mir zahl1, zahl2, zahl3 etc...?
meineZahlen[0]:=StrToInt(Edit1.Text);
Delphi-Quellcode:
Muss dies genauso geschreiben sein, oder muss ich da noch was ergänzen?
hilf:= zahlen[j-1];
zahlen[j-1]:= zahlen[j]; zahlen[j]:= hilf; |
Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse
Edit1.text - da steht Deine Zahl1 drinnen - diese wird in das Array auf Position 0 gesetzt
Edit2.text - da steht Deine Zahl2 drinnen - diese wird in das Array auf Position 1 gesetzt .. Dsa ist die Vertauschung der Zahlen.
Delphi-Quellcode:
Das Verfahren heißt BubbleSort, da steigen die großen oder kleinen Zahlen nach oben oder sinken nach unten.
hilf:= zahlen[j-1];
zahlen[j-1]:= zahlen[j]; zahlen[j]:= hilf; Das hängt davon ab, wie Du vergleichst. Grüße Klaus |
Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse
Hallo, anstatt 4 Variablen für Deine Zahlen anzulegen, packt Klaus diese in ein Array. Unter einem Array kannst Du Dir eine "Kette" von Variablen vorstellen. Das erste Glied dieser Kette hat den Index 0 (Schreibweise ArrayName[0]). Anstatt also mit verschiedenen Variablen herumzuhantieren, werden einfach die "Kettenglieder" bearbeitet, welche eben Deine Zahlen beinhalten. Da ich mich nicht sooo doll ausdrücken kann, solltest Du mal in der Online-Hilfe nach "Array" schauen, dann wird Dir hoffentlich einiges klarer.
|
Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse
Dsa ist die Vertauschung der Zahlen.
Delphi-Quellcode: markieren
Delphi-Quellcode:
Ich dachte es ist die sortierung nach der Größe?
hilf:= zahlen[j-1];
zahlen[j-1]:= zahlen[j]; zahlen[j]:= hilf; |
Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse
Die ganze Procedure macht die Sortierung.
Damit das Array aber sortiert wird müßen Zahlen von verschiedenen Positionen getauscht werden. So das z.B. die größte Zahl auf Position 0 steht und die kleinste auf Position 3, oder umgekehrt. Vielleicht schaust Du mal auf diese ![]() Grüße Klaus |
Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse
Delphi-Quellcode:
Also ich verstehe hier leider nur Bahnhof. Tut mir echt leid, vielleicht sollte ich es leiber sein lassen, bevor ich es noch schlimmer mache... :cry:
unit reihe;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ComCtrls; type TForm1 = class(TForm) BitBtn1: TBitBtn; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Button1: TButton; Button2: TButton; Label2: TLabel; Edit4: TEdit; procedure BitBtn1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var zahl1, zahl2, zahl3, zahl4: integer; implementation {$R *.dfm} procedure TForm1.BitBtn1Click(var zahlen: zahl1, zahl2, zahl3, zahl4); /// Hier sagt er: [Fehler] reihe.pas(35): 'zahl1' ist kein gültiger Typenbezeichner zahl1[0]:=StrToInt(Edit1.Text); zahl2[1]:=StrToInt(Edit2.Text); zahl3[2]:=StrToInt(Edit3.Text); zahl4[3]:=StrToInt(Edit4.Text); begin for i:= length(zahlen)-1 downto 0 do for j:= 1 to i do begin if zahlen[j] < zahlen[j-1] then begin hilf:= zahlen[j-1]; zahlen[j-1]:= zahlen[j]; zahlen[j]:= hilf; end; end; end; end. Gruß Max |
Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse
Guten Morgen,
Delphi-Quellcode:
Grüße
unit reihe;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ComCtrls; type TForm1 = class(TForm) BitBtn1: TBitBtn; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Button1: TButton; Button2: TButton; Label2: TLabel; Edit4: TEdit; procedure BitBtn1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } zahl1,zahl2,zahl3,zahl4: Integer; public { Public-Deklarationen } end; implementation {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); var zahlen: Array[0..3] of Integer; i,j: Byte; hilf: Integer; begin zahlen[0]:=StrToInt(Edit1.Text); zahlen[1]:=StrToInt(Edit2.Text); zahlen[2]:=StrToInt(Edit3.Text); zahlen[3]:=StrToInt(Edit4.Text); for i:= length(zahlen)-1 downto 0 do for j:= 1 to i do begin if zahlen[j] < zahlen[j-1] then begin hilf:= zahlen[j-1]; zahlen[j-1]:= zahlen[j]; zahlen[j]:= hilf; end; end; zahl1:=zahlen[0]; zahl2:=zahlen[1]; zahl3:=zahlen[2]; zahl4:=zahlen[3]; end; end. Klaus |
Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse
Leute, was macht es denn für einen Sinn, ihm auf Teufel komm raus den BubbleSort unterzujubeln? :roll: Er hat doch jetzt schon tausendmal gesagt, dass er von Arrays oder Sortieralgorithmen keinen blassen Schimmer hat und dass er sowieso den vorhandenen Algorithmus umformen soll
Hier mal mein Versuch der Implementierung. Ist nicht getestet, sondern nur schnell runtergeschrieben, wäre also höchstwahrscheinlich nochmal gut, ihn etwas genauer zu testen ;)
Delphi-Quellcode:
procedure Sortieren;
begin zahl1 := StrToInt(Edit1.Text); zahl2 := StrToInt(Edit2.Text); zahl3 := StrToInt(Edit3.Text); zahl4 := StrToInt(Edit4.Text); //Zahl1 und Zahl2 sortieren if zahl1 > zahl2 then begin gross := zahl1; klein := zahl2; end else begin gross := zahl2; klein := zahl1; end; //Zahl3 sortiert einfügen if zahl3 > gross then begin //Nach unten verschieben mittelgross := gross; gross := zahl3 end else begin if zahl3 > klein then mittelgross = zahl3; else begin //Nach unten verschieben mittelgross = klein; klein := zahl3; end; end; //Zahl4 sortiert einfügen if zahl4 > gross then begin //Nach unten verschieben mittel := mittelgross; mittelgross := gross; gross := zahl4; end else if zahl4 > mittelgross then begin //Nach unten verschieben mittel = mittelgross; mittelgross := zahl4; end else if zahl4 > klein then mittel := zahl4; else begin //Nach oben verschieben mittel := klein; klein := zahl4; end; label1.caption := 'Die Reihenfolge lautet: ' + inttostr(klein) + ', ' + inttostr(mittel) + ', ' + inttostr(mittelgross) + ', ' + inttostr(gross); end; |
Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse
Moin moin,
hier noch eine andere Variante ohne Array:
Delphi-Quellcode:
procedure VertauscheZahlen(var zahlA, zahlB: integer);
var Puffer: integer; begin Puffer := zahlA; zahlA := zahlB; zahlB := Puffer; end; procedure VergleicheZahlen(var zahlA, zahlB: integer); begin if zahlB < zahlA then VertauscheZahlen(zahlA, zahlB); end; procedure TForm1.Button1Click(Sender: TObject); var zahl1, zahl2, zahl3, zahl4: integer; begin zahl1 := StrToInt(Edit1.Text); zahl2 := StrToInt(Edit2.Text); zahl3 := StrToInt(Edit3.Text); zahl4 := StrToInt(Edit4.Text); VergleicheZahlen(zahl1, zahl2); VergleicheZahlen(zahl1, zahl3); VergleicheZahlen(zahl1, zahl4); VergleicheZahlen(zahl2, zahl3); VergleicheZahlen(zahl2, zahl4); VergleicheZahlen(zahl3, zahl4); label1.caption := 'Die Reihenfolge lautet: ' + inttostr(zahl1) + ', ' + inttostr(zahl2) + ', ' + inttostr(zahl3) + ', ' + inttostr(zahl4); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 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