Delphi6 Anzahl auflisten < Algorithmen < Schule < Informatik < Vorhilfe
|
Hallo , ich habe mit Delphi 6 einen Würfel programmiert , in der Schule..
So , jetzt habe ich eine Funktion eingebaut , wo der Benutzer die Anzahl der Würfe entscheiden kann.
Also wenn er eine 3 eintippt , dann wird 3 mal gewürfelt , die Augenzahlen sind zufällig.
Jetzt möchte ich es so haben , dass wenn der Würfel gewürfelt hat , die Augenzahlen zusammengefasst dargestellt werden.
Also , wenn der Benutzer sagt würfel 3 mal , dann würfelt er 3 mal und es kommen z.B diese Augenzahlen : 1 , 3 ,3.
Jetzt soll es so dargestellt werden :
1
2 x 3.
Wie kriege ich das hin ?
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 20:31 Sa 19.02.2011 | Autor: | Kroni |
Hallo,
indem du dir ein 'Histogramm' erstellst:
Du musst zaehlen, wie oft die 1, 2, 3, 4, 5 oder 6 gewuerfelt worden ist.
Dazu kann man sich ein Array erstellen, nennen wir es hist. Dann gibt es
hist[1], hist[2], hist[3], hist[4], hist[5] und hist[6]. Der Datentyp waere (vorzugsweise) ein Integer, weil du ja sowieso nur zaehlst. Am Anfang sollte dann hist[i] auf 0 initialisiert werden.
Nehmen wir an, du wuerfelst eine zwei, dann erhoehst du den Wert von hist[2] um eins,
hist[2] = hist[2] + 1
wuerfelst du dann eine 1, machst du das selbe mit hist[1] und wuerfelst du dann die Zahl i, machst du das ganze mit hist[?]
So. Dann hast du also nach allen Wuerfeln in hist[1] die Anzahl der Male, die eine 1 gewuerfelt worden ist usw.
PS: Damit kannst du auch die 'Qualitaet' des Wuerfels testen, indem du den Zufallsgenerator ziemlich oft wuerfen laesst, und dann mal mit der daraus resultierenden Wahrscheinlichkeit fuer i Augen mit der von dir erwarteten Wahrscheinlichkeit vergleichst.
LG
Kroni
|
|
|
|
|
Hallo,
Am Anfang sollte dann hist auf 0
> initialisiert werden.
Warum ?
>
> Nehmen wir an, du wuerfelst eine zwei, dann erhoehst du den
> Wert von hist[2] um eins,
>
Warum ?
> hist[2] = hist[2] + 1
>
Irgendwie kann ich das in Delphi nicht umsetzen..
Könntest du es mit Befehlen irgendwie deutlicher machen ?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:58 Sa 19.02.2011 | Autor: | Kroni |
Hallo,
>
> Am Anfang sollte dann hist auf 0
> > initialisiert werden.
> Warum ?
Nun, ueberlege dir, was passieren wuerde, wenn du die Werte von hist[i] *nicht* auf 0 initialisierst.
>
> >
> > Nehmen wir an, du wuerfelst eine zwei, dann erhoehst du
> den
> > Wert von hist[2] um eins,
> >
> Warum ?
> > hist[2] = hist[2] + 1
Okay, dann ist das Prinzip, welches ich durch diese Beispiele verdeutlichen wollte, noch nicht ganz angenkommen:
Dein Ziel ist doch das Folgende:
Du hast eine Liste von Zahlen (die integer sind), die im Bereich zwischen 1 und 6 liegen. Stellen wir uns also vor, die Liste bestehe aus folgenden Zahlen:
1 1 3 5 6 6 2 3 4 1 1 2 6
Gut. Dann gehen wir mal durch, was ich geschrieben habe.
Wir haben ein Array, das wir hist nennen, also hist[i=1..6] = 0 am Anfang. D.h. jeder Eintrag des Arrays (was ein Array ist, weisst du aber, oder?) hat den Wert 0.
Dann wird als erstes die 1 gewuerfelt, d.h. wir schreiben
hist[1] = hist [1] + 1
D.h. nach dem Wurf ist hist[1] auf 1 gestellt.
Danach wuerfln wir nochmal die 1. Also wieder:
hist[1] = hist[1] + 1
Da hist[1] aber schon auf 1 gestellt war, steht da nun:
hist[1] = 1+1 = 2
D.h. nun hat hist[1] den Wert 2. Warum? Weil wir 2 mal die 1 gewuerfelt haben.
Danach kommt die 3. Also schreiben wir
hist[3] = hist[3] + 1
Da hist[3] noch auf 0 gesetzt war, ist nun also
hist[3] = 1.
Und so weiter. Wenn du das jetzt mit der Liste, die oben steht, weiter durcharbeitest, siehst du, dass am Ende in
hist[i] steht, wie oft die Zahl i gewuerfelt worden ist.
Wenn du das eingesehen hast, dann kannst du dir ja ueberlegen, was passiert, wenn irgendeiner der Eintrage von hist[i] am Anfang deiner Wuerfelei *nicht* auf 0 gesetzt worden waere. Waere dann die Zahl, die man aus hist[i] erhaelt gleich der Anzahl der Male, die man die Zahl i gewuerfelt hat?
> Irgendwie kann ich das in Delphi nicht umsetzen..
> Könntest du es mit Befehlen irgendwie deutlicher machen
Ich habe momentan leider die Pascal-Syntax nicht mehr im Kopf.
Aber nehmen wir an, dass hist ein Array ist der Dimension 6 und hist[i] der i-te Eintrag dieses Arrays ist. Dann sollte eigentlich alles klar sein.
Wenn du das Prinzip oben verstanden hast, musst du dann also nur noch wissen, wie man ein Array in Delphi/Pascal deklariert.
LG
Kroni
> ?
>
|
|
|
|