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 Delphi schleifen umschreiben (https://www.delphipraxis.net/148402-delphi-schleifen-umschreiben.html)

xxsasch4xx 1. Mär 2010 13:18


Delphi schleifen umschreiben
 
hallo, ich habe ein problem mit delphi
ich will zwei for schleifen die direkt hinter einander liegen in 2 gleichwertige repeat umschreiben aber es klappt nicht!

hier mein quellcode mit den for schleifen
Delphi-Quellcode:
for i:=1 to 4 do
for j:=i+1 to 5 do
begin
if a[i] < a[j] then
begin
h:=a[i];
a[i]:=a[j];
a[j]:=h;
end;
end;
bitte um hilfe!

[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen. Mfg, SirThornberry[/edit]

Die Muhkuh 1. Mär 2010 13:20

Re: Delphi schleifen umschreiben
 
Hi und herzlich Willkommen :hi:

Wie sieht denn Dein Code für die repeat-Schleife aus?

xxsasch4xx 1. Mär 2010 13:27

Re: Delphi schleifen umschreiben
 
mein quelltext für die repeat schleifen sieht so aus aber ich habe zum beispiel keine ahnung wo man die until's hinschreiben muss das man keine endlosschleife bekommt
Delphi-Quellcode:
 i:=0;
  repeat
    i:=i+1;
repeat
j:=i+1;

  until
    i>3;
begin
if a[i] < a[j] then
begin
h:=a[i];
a[i]:=a[j];
a[j]:=h;
end;
end;
until j>4;
[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen. Mfg, SirThornberry[/edit]

Die Muhkuh 1. Mär 2010 13:31

Re: Delphi schleifen umschreiben
 
Hi,

eine Repeat-Until-Schleife sieht so aus:

Delphi-Quellcode:
repeat
  Anweisungen;
until Bedingung;
Als sinnfreies Beispiel, dass die Variable I solange erhöht, bis diese 6 ist.

Delphi-Quellcode:
i := 0;

repeat
  Inc(I);
until I = 6;

xxsasch4xx 1. Mär 2010 13:33

Re: Delphi schleifen umschreiben
 
aber
hier stehen ja zwei for schleifen direkt hintereinander

for i:=1 to 4 do
for j:=i+1 to 5 do

ich weiss nicht wie man festlegt das die erste repeat schleife dann nur die erste anweisung durchführt
weil wenn ich ein until unter die erste anweisung der ersten repeat schleife mache dann kommt da ja was durcheinander.

einzelne umschreibungen sind kein problem aber wenn da eine for schleife in der anderen drin ist weiss ich nicht wie das geht

Die Muhkuh 1. Mär 2010 13:38

Re: Delphi schleifen umschreiben
 
Hi,

als kleiner Tipp:

Delphi-Quellcode:
I := 1;

repeat // for i := 1 to 4 do
  J := I + 1;
  repeat // for J := i + 1 to 5 do
    Anweisungen
  until J = 5;
until I = 4;
Edit: Um Missvertändnissen vorzubeugen: Die Schleifen sind nicht komplett so! (Beachte Post von himitsu unter mir)

himitsu 1. Mär 2010 13:38

Re: Delphi schleifen umschreiben
 
i:=i+1; und j:=i+1; gehört an das Ende der jeweiligen Repeatschleifen, da sonst der 1. Durchlauf übersprungen würde.

Delphi-Quellcode:
I := 1;
repeat
  J := I + 1;
  repeat
    ...
    J := J + 1;
  until J = 5;
  I := I + 1;
until I = 4;
Wobei die eigentliche Entsprechung einer FOR-Schleife eine While-Schleife wäre, da am Anfang geprüft wird.
Delphi-Quellcode:
I := 1;
while I <= 4 do begin
  J := I + 1;
  while I <= 5 do begin
    ...
    J := J + 1;
  end;
  I := I + 1;
end;

@xxsasch4xx: Bitte stell deine QuellCodes in entsprechende Code-Tags (für Delphi = [delphi]...[/delphi]).
Deine Posts kannst du noch 24 Stunden lang editieren und dieses ändern.

xxsasch4xx 1. Mär 2010 13:47

Re: Delphi schleifen umschreiben
 
Delphi-Quellcode:

 I + 1;
repeat
  J := I + 1;
  repeat
 if a[i] < a[j] then
begin
h:=a[i];
a[i]:=a[j];
a[j]:=h;
end;
    J := J + 1;
  until J = 5;
  I := I + 1;
until I = 4;
in der ersten zeile kommt bei mir eine fehlermeldung!

"anweissung erforderlich, aber ausdruck vom typ 'integer' gefunden"

DeddyH 1. Mär 2010 13:50

Re: Delphi schleifen umschreiben
 
Da fehlt ja auch ein "I :=". Kann man aber drauf kommen, dass das so keinen Sinn ergibt.

[edit] Buchstabendreher [/edit]

xxsasch4xx 1. Mär 2010 13:54

Re: Delphi schleifen umschreiben
 
Delphi-Quellcode:

  J := I + 1;
for schleifenvariable i kann nach durchlauf undefiniert sein steht an der stelle


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 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