AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

While schleife endlos? oder nicht?

Ein Thema von JumpFrog · begonnen am 5. Apr 2009 · letzter Beitrag vom 6. Apr 2009
 
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#1

While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 14:55
hey leute,


wir sollen in der Berufsschule ein "LottoProgramm" schreiben.
Ich bin in der Stunde nicht fertig geworden und hab es Zuhause neu geschrieben. Später habe ich meinen Lehrer gefragt wieso mein Programm "hängt" (mir war klar das es an den Endlosschleife hing, allerdings hab ich die den logichen fehler nicht gefunden). Anschließend hab ich Algorithmus neu geschrieben. natürlich anders und nun Funktioniert das Programm ohne Probleme. Ich weiß nicht wieso weil es eigentlich beim ersten durchlaufen der schleife eine endlosschleife ergeben müsste.

Delphi-Quellcode:
procedure TForm1.BtnGroClick(Sender: TObject);
var
  x,a,i,zahl:Integer;
begin
x:=0;
a:=0;
zahl:=0;
while x<=5 do
begin
  If Feld[a]>=10 then
      zahl:=zahl+1;
      a:=a+1;
      x:=x+1
end;

Label1.Caption:=inttostr(zahl);

end;
Das Array "Feld" beinhaltet die ersten 6 Zahlen die die Funktion random ausgibt (sie legen zwischen 0 und 48). Die erste Zahl war immer eine 6. Somit würde ja die IF Bedingung nicht erfüllt und er durchläuft die schleife erneut mit der ersten Zahl in dem Array (welche ja 6 wäre). Somit wäre ja wieder eine endlosschleife entstanden. Allerdings funktioniert das programm so einmandfrei

ALso dachte ich mir (bevor ich das Programm geteste habe), das doch ein ELSE noch benötigt wird fals die bedingung nicht erfüllt ist (Schließlich will ich alle 6 Werte die im Array stehen vergleichen) Also hab ich ein else geschrieben.

Delphi-Quellcode:
procedure TForm1.BtnGroClick(Sender: TObject);
var
  x,a,i,zahl:Integer;
begin
x:=0;
a:=0;
zahl:=0;
while x<=5 do
begin
  If Feld[a]>=10 then
      zahl:=zahl+1;
      a:=a+1;
      x:=x+1;
  else
  x:=x+1;
end;

Label1.Caption:=inttostr(zahl);

end;
So hat er es mir erst garnicht von der Syntax her angenommen, also habe ich es mit begin und end versucht, ohne erfolg. Nun hatte ich das Programm so ausgeführt und es hatte funktioniert ohne Endlosschleife.

Kann mir jemand erklären wo nun genau mein Denkfehler ist?

Danke schonmal.

LG JumpFrog

Delphi-Quellcode:
procedure TForm1.BtnerzClick(Sender: TObject);
var
  i,a,c,LoZahl:Integer;
begin
a:=0;
i:=0;
c:=0;
while i<=5 do // Schleifenbegin für 6 Ziehungen
  begin
    LoZahl:=random(48)+1;
    Feld[a]:=LoZahl;
    while c<=5 do
      begin
         while Feld[a]= LoZahl do
         LoZahl:=random(48)+1;
        c:=c+1;
      end;
    a:=a+1;
  i:=i+1;
  end;

end;
(Hier noch die procedure die die Zahlen erstellt)
  Mit Zitat antworten Zitat
 


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 00:12 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