Delphi-PRAXiS

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

DeddyH 1. Mär 2010 13:56

Re: Delphi schleifen umschreiben
 
Ich denke, Du hast keine for-Schleife mehr :gruebel:

himitsu 1. Mär 2010 13:58

Re: Delphi schleifen umschreiben
 
Dieses + sollte ein := sein. :zwinker:
(mit etwas logischem Denken sollte man sich sowas schon denken können, vorallem wenn man Weiß, was dabei rauskommen sollte ... wir sind auch nur Menschen und verscreiben uns schnell mal :angel: )

Hab's im Post #7 entsprechend geändert.


Zitat:

for schleifenvariable i kann nach durchlauf undefiniert sein steht an der stelle
Zitat:

Zitat von DeddyH
Ich denke, Du hast keine for-Schleife mehr :gruebel:

jupp, das ist eigentlich nur eine Fehlermeldung nach einer For-Schleife, da es nur dort Schleifenvariablen gibt.

xxsasch4xx 1. Mär 2010 14:03

Re: Delphi schleifen umschreiben
 
ich habe vor der repeat schleife noch eine for schleife (die ich aber so lassen wollte)

der fehler ist aber jetzt weg i musste nur initialisiert werden!
aber es werden die letzen beiden zahlen nich verglichen und vertauscht!

(mein programm (bubble sort) soll 5 zufallszahlen erzeugen und sie absteigend sortieren)

xxsasch4xx 1. Mär 2010 14:07

Re: Delphi schleifen umschreiben
 
Delphi-Quellcode:


    J := J + 1;
  until J > 5;
  I := I + 1;
until I > 4;
jetzt klappt alles musste anstatt dem = zeichen nur größer als hinschreiben!
danke

Sherlock 1. Mär 2010 14:17

Re: Delphi schleifen umschreiben
 
Schönen Gruß an Deinen Lehrer...

Sherlock

Die Muhkuh 1. Mär 2010 16:14

Re: Delphi schleifen umschreiben
 
Zitat:

Zitat von Sherlock
Schönen Gruß an Deinen Lehrer...

Sherlock

Muss man den jetzt verstehen?

DeddyH 1. Mär 2010 16:17

Re: Delphi schleifen umschreiben
 
Das sollte vermutlich eine kleine Andeutung sein: "erzähl Deinem Lehrer, dass wir Dir bei den Hausaufgaben geholfen haben".

blauweiss 1. Mär 2010 16:33

Re: Delphi schleifen umschreiben
 
Also meiner Meinung nach hat sich der User xxsasch4xx wohltuend von manch anderen Hausaufgaben"machern" unterschieden.
Er hat nicht "gegoogelt" :roll: sondern selber versucht die Lösung zu finden. :thumb: Ist ein gewaltiger Unterschied !

Grüße,
blauweiss


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