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älligHerzliche 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ß
GustlbertTipp: Zufallszahlen kann man entweder durch die Funktion
rand()
aus der<cstdlib>
, oder (entweder durch boost oder in C++11 im<random>
-Header) durchdie mersenne-twistereine 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!