Kann mir einer bei diesem C++ Code helfen?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
int letterFill (char, string, string&);

Das ist nur die Deklaration der Funktion. Die braucht es weil der Compiler sonst nicht weiß, dass diese Funktion existiert bis er sie irgendwo findet.

Diese Deklaration sagt jetzt dem Compiler nur, ja diese Funktion gibt es und die nimmt einen char, einen String und eine Referenz auf einen String an, aber der Code dieser Funktion steht an anderer stelle.

srand(time(NULL));

Hier wird der Random Generator geseedet. Die Rand Funktion ist ein sogenannter Pseudozufallsgenerator. Er erzeugt also eigentlich keinen Zufall sondern er liefert nur zahlen aus die Zufällig wirken. Wenn man den Generator nicht seedet gibt er also immer die selben Zahlen aus. Dieser Code verwendet den aktuellen Timestamp als seed für den Randomnumbergenerator.

int n=rand()% 10;

Generiert eine Zufallszahl im Intervall [0,10) also die 0 kann kommen, die 10 nicht mehr. Weils ganze zahlen ist lieferts genauer [0,9]. Das ganze wird hier mit der Modulooperation gemacht.

wort=woerter[n]

Kommt auf den Kontext an. Wenn woerter ein Array von Strings ist wird hier einfach nur der String mit dem Index n in die Variable Wort geschrieben.

if(letterFill(buchstabe, wort, unbekannt)==0)

Mit dem Code weiter unten wird hier einfach nur gefragt ob matches in dieser Funktion 0 sind.

Im wesentlichen sucht die letterFill funktion das Geheimwort nach dem Buchstaben eingabe ab und liefert die Gesamtzahl der so gefundenen Buchstaben zurück. Wenn allerdings der Buchstabe eingabe schon am selben Index in eingebenes_wort steckt gibt die Funktion 0 zurück.

Da hier über den ganzen String iteriert wird darf der Buchstabe eingabe somit nicht in der Variable eingebenes_wort vorkommen.


aatankii 
Beitragsersteller
 14.06.2021, 19:04

Wow danke für die ausführliche Antwort, hat mir sehr geholfen!

0

Das ist so viel zeugs. Das kann man schlecht hier in einem gute fragen post klären.

Ändere auf jedenfall mal die Zeile:

int letterFill (char, string, string&);

zu int letterFill (char, string, string);

Denn ich glaube kein Lehrer wird dir abkaufen, dass du referenzen und pointer kannst.


TheName980  14.06.2021, 19:07

Dann musst du eingegebenes_wort auch als globale variable definieren. Also die funktion wird dann eigentlich geändert zu zu int letterFill (char, string);

0
aatankii 
Beitragsersteller
 14.06.2021, 19:12

Nur das Ding ist, ich habe dies gerade weggedacht, ebenfalls bei noch einem anderen und danach hat das Programm nicht mehr richtig funktioniert, also es war vorher so, dass es das Wort in Sternchen * ausgegeben hat damit man es ja nicht erkennt, und wenn man einen Buchstaben richtig erraten hat, dann ist das Sternchen weggegangen und der Buchstabe erschien dort, aber als ich das weggemacht habe, ist das Sternchen bei der Eingabe eines richtigen Buchstaben nicht mehr weggegangen

0
TheName980  14.06.2021, 19:22
@aatankii

Man könnte dir höchstens über skype und teamviewer helfen aber das ist so eine sache... Da ist so viel Zeugs das du wissen müsstest. Pointer,referenzen,listen. Versuche die methoden mal auf deine art umzuschreiben? Ohne pointer und so zeugs. Ausserdem bei so sachen wie srand oder so gehst du auf google und tipps "srand befehlsreferenz c++" ein. Man googled solche sachen normalerweise

1