Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Wiederholungsanweisungen (https://www.delphipraxis.net/108321-wiederholungsanweisungen.html)

Avicenna 11. Feb 2008 16:47


Wiederholungsanweisungen
 
Hallo,
ich komme bei folgender Aufgabe einfach nicht weiter. Ich habe ein Würfelprogramm, und wenn mit dem Würfel w1 zweimal hintereinander die gleiche Zahl kommt, soll die Anzahl der dafür benötigten Werte ausgegeben werden.
Das Programm in den Rohform funktoniert, aber ich weiß nicht, wie ich die Aufgabenstellung umsetzen soll.
So sieht die betreffende Prozedur bisher aus:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  anzahl:=0;
  ergebnis:=0;
  repeat
    w1.wuerfeln();
    anzahl:=anzahl+1;
    ergebnis:=w1.augenLesen();
    w1.wuerfeln();
    anzahl:=anzahl+1;
  until ergebnis=w1.augenLesen();
  label1.caption:='Versuche:'+inttostr(anzahl);
end;
Das ist aber falsch, da nun lediglich geprüft wird, ob Wurf 1 + Wurf 2 oder Wurf 3 + Wurf 4 zusammenpasst, nicht jedoch, ob Wurf 2 + Wurf 3 zusammenpasst.

Wie kann ich die Aufgabe realisieren?

Kroko1999 11. Feb 2008 16:54

Re: Wiederholungsanweisungen
 
Delphi-Quellcode:
var
  Hok: boolean;
begin
  Counter := 0;
  repeat
    W1 := 1+Random(6);
    W2 := 1+Random(6);
    Inc(Counter);
    HOk := W1=W2;
    if not HOk then W1 := W2;
  unitl Hok;
ungetestet und
[EDIT]
verbessert

cruiser 11. Feb 2008 17:07

Re: Wiederholungsanweisungen
 
Deine Vorbereitungen dürften so nich ganz klappen. Du musst 1x Würfeln vorziehen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  w1.wuerfeln(); // 1x vorwürfeln
  anzahl:=1;    // 1x wurde ja nun gewürfelt
  repeat // wiederhole ... (1)
    ergebnis:=w1.augenLesen(); // bisheriges Ergebnis merken
    w1.wuerfeln(); // neu würfeln
    Inc(anzahl); // erhöhe die Anzahl
  until ergebnis=w1.augenLesen(); // (1) ... bis das gemerkte ergebnis mit den Augen übereinstimmt
  label1.caption:='Versuche:'+inttostr(anzahl); // Ausgabe
end;
@ Kroko:

Deine Version knallt weil es spätestens nach der Überprüfung auf Ungleichheit und deren Folge wieder gleich ist, die Anzahl wäre also immer 1

grenzgaenger 11. Feb 2008 17:13

Re: Wiederholungsanweisungen
 
mal ins blaue...

Delphi-Quellcode:
w1.würfeln;
versuche = 0;
 repeat
   inc(versuche);
   w2.würfeln;
 until w1.augen <> w2.augen;
writeln('Anzahl der Versuche: ', Versuche);
entweder mit zwei instanzen oder die augenzahl zwischenspeichern. sonst sind sie bei jeden neuen versuch wieder weg ... ;-)

Kroko1999 11. Feb 2008 17:26

Re: Wiederholungsanweisungen
 
korrigiert!

Avicenna 11. Feb 2008 17:28

Re: Wiederholungsanweisungen
 
Vielen Dank für eure Antworten :)

cruisers Lösung ist das, wonach ich schon den ganzen Tag suche.

Vielen Dank dafür :thumb:


Ich wünsche noch eine schöne Woche,

Avicenna

DP-Maintenance 12. Feb 2008 07:11

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage


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