Arithmetische Typenumwandlung


  • Mod

    Talon schrieb:

    Muss ich als Anfänger ein Programm schreiben können das eine Sinus Kurve ausgibt? oder muss ich n kleines Spiel schreiben können? (mit nem ball etc.) in meinem Buch stehen nähmlich am Ende jedes Kapitels Aufgaben und die sind verdammt schwer und passen meistens nicht wirklich zum Thema....

    Wenn in deinem Buch ein einfaches Grafiksystem erklaert wird*, dann: Ja, die Aufgabe solltest du loesen koennen.
    Dein Buch ist Stroustrups "Programming principles and practice using c++", oder?

    *: Grafische Ausgabe ist eigentlich kein Kernbestandteil des C++-Kurrikulums.



  • 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;  
    }
    

  • Mod

    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


  • Mod

    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?


  • Mod

    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


Anmelden zum Antworten