Worträtsel



  • Wie kann man mit Arrays ein Spiel programmieren, bei dem z.B aus einer Liste mit 3 festgelegten Wörtern eins zufällig ausgewählt wird, und dann die Buchstaben des Wortes zufällig vertauscht werden. Anschließend muss man eingeben, um welches Wort es sich handelt?

    Gruß
    Gustlbert



  • Indem man den Code für ein solches Programm schreibt. Zeig mal deinen Ansatz?



  • Hallo Gustlbert,

    einige Stichworte:

    std::vector fürs Array
    std::string für die Worte
    std::iostream für das ausgeben und eingeben
    srand() für den Start des Zufalls
    rand() für Zufällig

    Herzliche Grüsse
    Walter



  • gustlbert schrieb:

    Wie kann man mit Arrays ein Spiel programmieren, bei dem z.B aus einer Liste mit 3 festgelegten Wörtern eins zufällig ausgewählt wird, und dann die Buchstaben des Wortes zufällig vertauscht werden. Anschließend muss man eingeben, um welches Wort es sich handelt?

    Gruß
    Gustlbert

    Tipp: Zufallszahlen kann man entweder durch die Funktion rand() aus der <cstdlib> , oder (entweder durch boost oder in C++11 im <random> -Header) durch die mersenne-twister eine engine erzeugen. Das vertauschen kriegst du sicher auch hin, kleiner Tipp:

    bool myfunction (int i,int j) { return rand() % 2; }
    
    //...
    std::string wort("Speer");
    std::sort(wort.begin(), wort.end(), myfunction);
    

    Ungetestet (aber mit guten Absichten 🤡 )

    Edit: Statt dem Quatsch oben nimm lieber random_shuffle für alles. Also:

    std::string wort("Speer");
    std::random_shuffle(wort.begin(), wort.end());
    


  • weicher schrieb:

    std::iostream

    Klar haben wir alle unsere Vorstellungen, aber..



  • Hacker schrieb:

    weicher schrieb:

    std::iostream

    Klar haben wir alle unsere Vorstellungen, aber..

    std::iostream gibt es, siehe http://en.cppreference.com/w/cpp/io 😉



  • gustlbert schrieb:

    Wie kann man mit Arrays ein Spiel programmieren, bei dem z.B aus einer Liste mit 3 festgelegten Wörtern eins zufällig ausgewählt wird, und dann die Buchstaben des Wortes zufällig vertauscht werden. Anschließend muss man eingeben, um welches Wort es sich handelt?

    So:

    #include <algorithm> // random_shuffle
    #include <iostream>
    #include <string>
    #include <ctime>
    #include <cstdlib> // srand
    
    int main()
    {
        using namespace std;
        srand( unsigned(time(0)) ); // zufälliger Startwert
        string worte[] = { "Hallo", "C++-Forum", "Yachtclub", "string", "input", "gustlbert" }; // drei oder mehr Worte
        while( cin )
        {
            random_shuffle( worte, worte + sizeof(worte)/sizeof(*worte) ); // array mit Worten mischen
            string wort = *worte; // das erste ist immer das gesuchte
            random_shuffle( wort.begin(), wort.end() ); // Buchstaben im Wort mischen
            cout << "\nWelches Wort ist '" << wort << "'?" << endl;
            for( string in; cout << "> ", cin >> in && in != *worte; ) // solange fragen, bis ok
                cout << "nee .. noch mal" << endl;
            if( cin )
                cout << "richtig !!" << endl;
        }
        return 0;
    }
    

    Gruß
    Werner



  • Eine weitere Hausaufgabe erfolgreich gelöst von Werner 🙂



  • Ich hab die Idee auch mal aufgegriffen..
    Die Wörterliste hab ich aus mehreren Wikipedia-Artikeln, die ich einfach ein wenig mit fstream und co bearbeitet hab, zusammengeschnippelt.
    Ist nur schnell hingeschmiert gewesen, ich fand die Idee halt gut..

    http://www.file-upload.net/download-4235419/Woerterraten.zip.html



  • Weltklasse! 🙂
    Vielen Dank! 🙂


Anmelden zum Antworten