AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lassen?
Thema durchsuchen
Ansicht
Themen-Optionen

Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lassen?

Ein Thema von Mexbuild · begonnen am 29. Mai 2007 · letzter Beitrag vom 3. Jun 2007
Antwort Antwort
Seite 2 von 3     12 3      
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse

  Alt 30. Mai 2007, 20:49
Die Zahlen packst Du doch in das Array welches sortiert wird:

Delphi-Quellcode:
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);
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Mexbuild

Registriert seit: 6. Mai 2007
Ort: Düsseldorf
24 Beiträge
 
#12

Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse

  Alt 30. Mai 2007, 20:53
meineZahlen[0]:=StrToInt(Edit1.Text); Sind das dann bei mir zahl1, zahl2, zahl3 etc...?

Delphi-Quellcode:
            hilf:= zahlen[j-1];
            zahlen[j-1]:= zahlen[j];
            zahlen[j]:= hilf;
Muss dies genauso geschreiben sein, oder muss ich da noch was ergänzen?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse

  Alt 30. Mai 2007, 20:57
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:
hilf:= zahlen[j-1];
zahlen[j-1]:= zahlen[j];
zahlen[j]:= hilf;
Das Verfahren heißt BubbleSort, da steigen die großen oder kleinen Zahlen nach oben oder sinken nach unten.
Das hängt davon ab, wie Du vergleichst.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#14

Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse

  Alt 30. Mai 2007, 20:59
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Mexbuild

Registriert seit: 6. Mai 2007
Ort: Düsseldorf
24 Beiträge
 
#15

Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse

  Alt 30. Mai 2007, 21:05
Dsa ist die Vertauschung der Zahlen.

Delphi-Quellcode: markieren
Delphi-Quellcode:
hilf:= zahlen[j-1];
zahlen[j-1]:= zahlen[j];
zahlen[j]:= hilf;
Ich dachte es ist die sortierung nach der Größe?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse

  Alt 30. Mai 2007, 21:09
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 Webseite, da ist BubbleSort recht anschaulich erklärt.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Mexbuild

Registriert seit: 6. Mai 2007
Ort: Düsseldorf
24 Beiträge
 
#17

Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse

  Alt 30. Mai 2007, 21:41
Delphi-Quellcode:
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.
Also ich verstehe hier leider nur Bahnhof. Tut mir echt leid, vielleicht sollte ich es leiber sein lassen, bevor ich es noch schlimmer mache...

Gruß Max
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#18

Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse

  Alt 31. Mai 2007, 06:40
Guten Morgen,

Delphi-Quellcode:
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.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#19

Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse

  Alt 31. Mai 2007, 09:03
Leute, was macht es denn für einen Sinn, ihm auf Teufel komm raus den BubbleSort unterzujubeln? 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;
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Zahlenreihenfolge mit 4 Zahlen ordnen und anzeigen lasse

  Alt 31. Mai 2007, 12:19
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;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 04:57 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