Arithmetische Typenumwandlung
-
Ne ich bin stolzer Besitzer des Buches: C++ Lernen und professionell anwenden
Zum Beispiel werden im 4. Kapitel Schleifen erklärt,also was man mit ihnen machen kann usw.
Wenn man dann zu den Aufgaben blättert, steht da dann z.B.Programmieren Sie folgendes Zahlenbeispiel:
Der Computer merkt sich eine Zufallszahl zwischen 1 und 15, die der Spieler (=Benutzer) erraten soll. Der Spieler hat insgesamt drei Versuche. Nach jedem
falschen Versuch gibt der Computer an, ob die angegebene Zahl zu klein oder zu groß ist. Ist auch der dritte Versuch erfolglos, wird die gesuchte Zahl ausgegegeben.Der Spieler hat gewonnen, wenn er spätestens beim dritten Versuch die Zahl errät.
Er soll das Spiel beliebig oft wiederholen können.Zu Initalisierung des Zufallszahlengenerator verwenden Sie die Systemzeit. Die Funktion time() liefert die Anzahl Sekunden seit dem 1.1.1970, 0:0Uhr. Der
long-Wert der Variable sek wird durch unsigned (sek) in einen unsigned-Wert
umgewandekt und dann der funktion srand() übergeben.Davon verstehe ich nur die hälfte und die Lösung zu dieser Aufgabe ist noch
komplizierter...
Also die time() Funktion kam bisher nicht einmal vor....Das ist die Lösung:
// zahlenSp.cpp : Ein Zahlenspiel gegen den Computer // ------------------------------------------------------------ #include <cstdlib> // Prototypen von srand() und rand() #include <ctime> // Prototyp von time() #include <iostream> using namespace std; int main() { int zahl, versuch; char wb = 'w'; // wiederholen oder beenden time_t sek; time( &sek); // Zeit in Sekunden lesen srand((unsigned)sek); // Zufallsgenerator initialisieren cout << "\n\n " << " ******* EIN ZAHLENSPIEL *******" << endl; cout << "\n\nDie Spielregeln:" << endl; while( wb == 'w') { cout << "Ich merke mir eine Zahl zwischen 1 und 15\n" << "Sie haben drei Versuche die Zahl zu raten!\n" << endl; zahl = (rand() % 15) + 1; bool gefunden = false; int count = 0; while( !gefunden && count < 3 ) { cin.sync(); // Eigabepuffer löschen cin.clear(); cout << ++count << ". Versuch: "; cin >> versuch; if( versuch < zahl) cout << "zu klein!" << endl; else if( versuch > zahl) cout << "zu gross!" << endl; else gefunden = true; } if( !gefunden) cout << "\nIch habe gewonnen!" << " Die gesuchte Zahl: " << zahl << endl; else cout << "\nBravo! Sie haben gewonnen!" << endl; cout << "Wiederholen --> <w> Beenden --> <b>" << endl; do cin.get(wb); while( wb != 'w' && wb != 'b'); } return 0; }
-
Die Zeilen 35 und 36 sind totaler Quark, aber ansonsten: Findest du das wirklich schwer? Das mit der Initialisierung des Zufallsgenerators ist etwas kompliziert ausgedrueckt. Haettest du aber die Grundfunktion auch nicht selber hin bekommen?
-
Doch naklar ich hab sogar das Programm alleine fertiggestellt nur dafür brauchte ich nen halben tag glaube ich (mit pausen) also ich verstehe es jetzt schon nur
davor war es total schwer weil es im Buch noch nie erklärt wurde
-
Schwer darf so eine Aufgabe ja auch durchaus sein. Du sollst ja was bei lernen. Unter anderem, wie man eine schier unloesbar erscheinende Problemstellung angeht. Wenn du selber auf die Loesung kommst, ist das ein gutes Zeichen.
-
Ist es eigentlich schlecht wenn man etwas googelt was man nicht verstanden hat?
-
Talon schrieb:
Ist es eigentlich schlecht wenn man etwas googelt was man nicht verstanden hat?
Nein, im Gegenteil. Das ist, wie du spaeter ueberhaupt alles lernst, wenn du mal ueber die Anfaengerbuecher hinaus bist. Daher ist es gut, zu lernen, wie man gut googelt.
Siehe auch die Linkliste fuer Neulinge hier im Forum. Insbesondere die dort angegebenen Referenzen sind sehr nuetzlich zur Selbsthilfe.
-
Welche Linkliste??
-
Talon schrieb:
Welche Linkliste??
Auf der ersten Seite von diesem Unterforum, ganz oben der erste Thread.
Ist sogar als wichtig markiert.
-
Achsoo habe ich wohl übersehen danke
-
Talon schrieb:
Achsoo habe ich wohl übersehen danke
Das ist so gewollt.
Das Wichtig: erzeugt ein PAL-Feld