![]() |
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:
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.
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; Wie kann ich die Aufgabe realisieren? |
Re: Wiederholungsanweisungen
Delphi-Quellcode:
ungetestet und
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; [EDIT] verbessert |
Re: Wiederholungsanweisungen
Deine Vorbereitungen dürften so nich ganz klappen. Du musst 1x Würfeln vorziehen:
Delphi-Quellcode:
@ Kroko:
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; 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 |
Re: Wiederholungsanweisungen
mal ins blaue...
Delphi-Quellcode:
entweder mit zwei instanzen oder die augenzahl zwischenspeichern. sonst sind sie bei jeden neuen versuch wieder weg ... ;-)
w1.würfeln;
versuche = 0; repeat inc(versuche); w2.würfeln; until w1.augen <> w2.augen; writeln('Anzahl der Versuche: ', Versuche); |
Re: Wiederholungsanweisungen
korrigiert!
|
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
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