C++ Builder Aufgabe < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Aufgabe | 1)
Programmiere folgendes Würfelspiel für eine Person, das durch den Button1Click aktiviert werden soll.
* Es werden zufällig zwei Zahlen (mit herkömmlichen Würfel) gewürfelt
* Wenn die Summe der gewürfelten Augenzahl kleiner als 4 oder größer als 8 ist, hat der Spieler gewonnen, ansonsten verloren.
Schreibe das Programm ohne die vom Builder automatisch angegebenen Inhalte.
randomize () kann mit in den Button programiert werden.
2)
Mit a=random(5) und b=random(4)+1 werden zwei Zahlen auf Knopfdruck gewählt. Der Spieler erhält zwei Punkte, wenn beide gleich sind und einen Punkt, wenn die erste Zahl (a) gerade ist. Ansonsten erhält er keinen Punkt. Bei Mehrdeutigkeiten erhält der Benutzer immer die größere Punktzahl. |
Ich denke, ich konnte das Programm ohne größere Probleme schreiben, dennoch kommen mir ein paar Fragen auf, die ich in rot schreiben werde.
1)
int a, b;
Button1Click
randomize ();
a=random (6)+1 heißt das dann, das es Zahlen von 1-6 gibt?
b=random (6)+1
if ((a+b>8)) [mm] \parallel [/mm] 8a+b<4))
Label1->Caption"Sie haben gewonnen";
else
Label1->Caption"Sie haben verloren";
2)
int a,b;
Button1Click
randomize ():
a=random (5);
b=random (4)+1;
if ((a==0) [mm] \parallel (a==2)\parallel(a==4))
[/mm]
Label1->Caption"Sie erhalten zwei Punkte!";
if (a==b)
Label1->Caption"Sie erhalten zwei Punkte!";
else
Label1->Caption"Sie erhalten keine Punkte!";
Stimmen die zwei Programmierungen?
Ich habe aber noch ein paar Verständnisfragen:
Wann benutzt man String?
Und was heißt z.B.
"Kapital ++"?
Und die letzte Frage:
Wenn man
int z1; definiert, dann muss man ja auch IntToStr(z1); irgendwann programmieren, aber wieso ist das so? Ich verstehe nicht, wieso eine Zahl, die man in ein edit eingeben kann dann in einen Text oder anders rum umgewandelt werden muss!
Ich hoffe, ihr könnt mir helfen!
LG,
Sarah
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 09:35 Fr 05.05.2006 | Autor: | Frank05 |
> Ich denke, ich konnte das Programm ohne größere Probleme
> schreiben, dennoch kommen mir ein paar Fragen auf, die ich
> in rot schreiben werde.
Ich hab nie mit dem C++ Builder gearbeitet, daher werde ich mich nur auf die eigentlichen C++ Inhalte konzentrieren. Aber scheinbar hat dir die Zuordnung des Codes zu den Buttons ja auch keine Probleme bereitet.
> 1)
> int a, b;
>
> Button1Click
>
> randomize ();
> a=random (6)+1 heißt das dann, das es Zahlen von 1-6
> gibt?
Normalerweise ja. Die meisten random(z) Implementierungen sind so gehalten, dass sie ein Ergebnis aus [mm]\Z_z[/mm] liefern, also von 0 bis z-1.
> b=random (6)+1
>
> if ((a+b>8)) [mm]\parallel[/mm] 8a+b<4))
Ich nehme an die zweite 8 ist ein Tippfehler?
> Label1->Caption"Sie haben gewonnen";
> else
> Label1->Caption"Sie haben verloren";
>
>
>
> 2)
> int a,b;
>
> Button1Click
>
> randomize ():
> a=random (5);
> b=random (4)+1;
>
> if ((a==0) [mm]\parallel (a==2)\parallel(a==4))[/mm]
'Gerade' und 'ungerade' testet man vorzugsweise mit der Modulo-Operation. Es geht zwar so auch, aber sobald der Wertebereich größer als der eines Würfels ist wird es etwas umständlich.
if ( (a % 2) == 0 ) Label1->Caption("a ist gerade");
else if ( (a % 2) == 1) Label1->Caption("a ist ungerade");
else Label1->Caption("den Fall gibts nicht [0 wäre gerade]");
> Label1->Caption"Sie erhalten zwei Punkte!";
Das stimmt nicht ganz mit der Aufgabenstellung überein.. in dem Fall soll es nur einen Punkt geben (und dann musst du noch mit der Reihenfolge wegen Mehrdeutigkeit aufpassen).
> if (a==b)
> Label1->Caption"Sie erhalten zwei Punkte!";
> else
> Label1->Caption"Sie erhalten keine Punkte!";
>
>
> Stimmen die zwei Programmierungen?
Sieht gut aus soweit.
> Ich habe aber noch ein paar Verständnisfragen:
>
> Wann benutzt man String?
String ist ein Datentyp, der Zeichenketten speichert. Da sehr sehr viel in textueller Form verarbeitet werden kann wird dieser Typ entsprechend häufig verwendet. z.B. könntest du anstatt die Caption jedesmal mit einem konstanten String zu ändern den Text dynamisch erzeugen, indem du eine String Variable verwendest, den Text z.B. abhängig vom Würfelwurf erzeugst und darin speicherst und ihn dann an die Caption übergibst.
> Und was heißt z.B.
> "Kapital ++"?
Keine Ahnung woher das nun kommt, aber alles was zwischen diesen Anführungszeichen steht ist einfach nur ein Text.
> Und die letzte Frage:
>
> Wenn man
> int z1; definiert, dann muss man ja auch IntToStr(z1);
> irgendwann programmieren, aber wieso ist das so? Ich
> verstehe nicht, wieso eine Zahl, die man in ein edit
> eingeben kann dann in einen Text oder anders rum
> umgewandelt werden muss!
Weil sich die Datentypen unterscheiden. Ein int ist eine Zahl und in einem edit Feld gibt man einen Text ein. Das sind prinzipiell unterschiedliche Dinge und auch wenn du erwartest, dass in dem Text eine Zahl steht, dann ist 3 immer noch etwas anderes als "3". Die entsprechende Umwandlung kann dann auch fehlschlagen, wenn z.B. "a3b" eingegeben wird.
> Ich hoffe, ihr könnt mir helfen!
Wie gesagt ich hatte nie mit dem C++ Builder zu tun, aber ich hoffe ich konnte dir ein paar Sachen klarer machen.
|
|
|
|