String Veränderung Problem



  • Hallo,
    vielleicht könnt ihr mir ja helfen. Ich bin grade dabei das Spiel Hangman zu Coden bin dabei aber auf einen Fehler gestoßen und zwar die Zeile:

    Loesung[0] = Char1;

    sowie alle weiteren ähnlichen Zeilen, geben mir folgenden fehler aus:

    Expected ';' after expression
    Expected expression
    Expression result unused

    hier der Code:

    #include <iostream>
    #include <stdio.h>
    #include <string>
    
    using namespace std;
    
    int main(int argc, const char * argv[]) {
        
        char Char1;
        string Loesung = "____";
        int Leben;
        Leben = 10;
        while(Leben == 0)
        {
            cout << "Folgendes Wort wird gesucht: " << Loesung;
            cin >> Char1;
            if (Char1 == 'H')
            {
                Loesung[0] = Char1;
                cout << "Folgendes Wort wird gesucht: " << Loesung;
            }
            
            
            if (Char1 == 'A')
            {
                Loesung[1] = Char1;
                cout << "Folgendes Wort wird gesucht: " << Loesung;
            }
            if (Char1 == 'U')
            {
                Loesung[2] = Char1;
                cout << "Folgendes Wort wird gesucht: " << Loesung;
            }
            if (Char1 == 'S')
            {
                Loesung[3]=Char1;
                cout << "Folgendes Wort wird gesucht: " << Loesung;
            }
            
            else
            {
                Leben--;
                
                cout << "Folgendes Wort wird gesucht: " << Loesung << ",du hast noch " << Leben << " Leben!";
                
            }
            
            if(Loesung == "Haus"){
                cout << "Gewonnen!";
                break;
            }
            return 0;
        }
    }
    
    


  • @b1llyth3k1t sagte in String Veränderung Problem:

    Loesung[0] = Char1;

    So eine Zeile gibt es in deinem gezeigten Code nicht. Was sind das für Schmierzeichen?

    Was hat die Frage mit MFC zu tun?



  • @manni66 sagte in String Veränderung Problem:

    Was hat die Frage mit MFC zu tun?

    Nix 😉



  • In welche Forum Abteilung muss ich denn reinschreiben?
    die Zeile steht doch in dem Quelltext?



  • @b1llyth3k1t
    Loesung[0] = Char1;



  • @manni66 Verstehe nicht was du von mir willst 🙂 kannst du mir das genauer sagen? Ich habe doch dort oben den String definiert und mit dem Loesung[0] = Char1; möchte ich gerne die Nullte Stelle mit der Variable Char1 austauschen...



  • @b1llyth3k1t
    Benutze mal Chrome oder Firefox, dann siehst du vielleicht was ich meine.



  • @manni66 Ich benutze grade Firefox -.-*



  • @b1llyth3k1t
    Tja, bei mir werden da undefinierbare Zeichen in der Zeile angezeigt. Die werden wohl auch dem Compiler nicht schmecken.



  • @b1llyth3k1t
    Zitiere mal deinen Code, dann siehts du das im Edit-Fenster



  • Jungs ich danke euch! Das Problem war ernsthaft, dass ich mit einer Tastatur am Mac Schreibe die nicht von Apple ist... Lösung: Gleiche Zeichen mit der Laptop Tastatur hat den Fehler für den Compiler behoben 🤣


  • Global Moderator |  Mod

    Mal zum Inhalt des Programms:
    So ungefähr 70% deiner Codezeilen sind spezifisch auf das Lösungswort 'Haus' zugeschnitten. Was passiert denn wohl, wenn du ein anderes Lösungswort möchtest? Dann musst du praktisch dein gesamtes Programm umschreiben. Oder gar die Auswahl aus zwei oder mehr Wörtern? Wie lang wird dein Programm dann und wie viel musst du dafür programmieren? Außerdem musst du bei jedem neuen Wort ganz genau sicher gehen, dass alle deiner vielen Codezeilen perfekt zusammen passen: Du möchtest das Lösungswort "Wasser"? Dann darfst du nicht vergessen, string Loesung = "____"; auf 6 '_' zu verlängern, sonst kracht es. Und du musst zusehen, dass jeder deiner if-Blöcke zusammen passt, vergisst du einen oder machst bei einem einen Fehler, kracht es. Und du musst dir noch etwas neues ausdenken, wie du das doppelte 's' in dem Lösungswort behandelst, weil deine jetzigen if-Blöcke das nicht können. Und, und, und. Bloß um ein anderes Lösungswort zu haben...

    Mit deinen Kenntnissen über Schleifen und Zeichenketten könntest du dein Programm auch so schreiben, dass es mit beliebigen Wörtern zurecht kommt und dabei noch viel kürzer ist. Das ist eine sehr gute Richtlinie beim Programmieren, dass man die Logik immer möglichst allgemein und unabhängig von den verarbeiteten Daten lässt. Das macht Programme nicht nur flexibler, sondern oft auch viel einfacher und somit weniger fehleranfällig. Das solltest du unbedingt lernen und von nun an bei jedem deiner Übungsprogramme so machen.



  • @seppj sagte in String Veränderung Problem:

    Mal zum Inhalt des Programms:
    So ungefähr 70% deiner Codezeilen sind spezifisch auf das Lösungswort 'Haus' zugeschnitten. Was passiert denn wohl, wenn du ein anderes Lösungswort möchtest? Dann musst du praktisch dein gesamtes Programm umschreiben. Oder gar die Auswahl aus zwei oder mehr Wörtern? Wie lang wird dein Programm dann und wie viel musst du dafür programmieren? Außerdem musst du bei jedem neuen Wort ganz genau sicher gehen, dass alle deiner vielen Codezeilen perfekt zusammen passen: Du möchtest das Lösungswort "Wasser"? Dann darfst du nicht vergessen, string Loesung = "____"; auf 6 '_' zu verlängern, sonst kracht es. Und du musst zusehen, dass jeder deiner if-Blöcke zusammen passt, vergisst du einen oder machst bei einem einen Fehler, kracht es. Und du musst dir noch etwas neues ausdenken, wie du das doppelte 's' in dem Lösungswort behandelst, weil deine jetzigen if-Blöcke das nicht können. Und, und, und. Bloß um ein anderes Lösungswort zu haben...

    Mit deinen Kenntnissen über Schleifen und Zeichenketten könntest du dein Programm auch so schreiben, dass es mit beliebigen Wörtern zurecht kommt und dabei noch viel kürzer ist. Das ist eine sehr gute Richtlinie beim Programmieren, dass man die Logik immer möglichst allgemein und unabhängig von den verarbeiteten Daten lässt. Das macht Programme nicht nur flexibler, sondern oft auch viel einfacher und somit weniger fehleranfällig. Das solltest du unbedingt lernen und von nun an bei jedem deiner Übungsprogramme so machen.

    QFT



  • @seppj Danke danke werd ich mir mal zu Herzen nehmen, komme von der Sprache Python und das nehm ich nur als Übung... Das Coden sollte eig nicht länger als 10 min dauern; nur kam mit dem Fehler nicht zurecht.



  • @b1llyth3k1t Aber auch in Python würdest du nicht jedes Zeichen fest einprogrammieren. Algorithmisch macht die Sprache keinen großen Unterschied.



  • @tggc sagte in String Veränderung Problem:

    QFT

    Das habe ich jetzt schon mehrmals von dir gelesen und ich denke dabei immer mit Horror an Quantenfeldtheorie (oder Quantum Field Theory, falls es ne Englische Abkürzung ist), eine der Vorlesungen, bei denen ich froh war, dass ich am Ende den Schein nicht benötigt habe 😉 Was willst du damit sagen?



  • @wob sagte in String Veränderung Problem:

    Was willst du damit sagen?

    Wahrscheinlich etwas davon: https://de.wikipedia.org/wiki/QFT
    Such dir das passende aus.


  • Global Moderator |  Mod

    @b1llyth3k1t sagte in String Veränderung Problem:

    @seppj Danke danke werd ich mir mal zu Herzen nehmen, komme von der Sprache Python und das nehm ich nur als Übung... Das Coden sollte eig nicht länger als 10 min dauern; nur kam mit dem Fehler nicht zurecht.

    Ich empfehle, auch (oder gerade!) beim Üben auf so etwas Wert zu legen. Schließlich willst du ja Üben, wie es richtig geht. Übungsbeispiele sind auch besonders gut geeignet, sich eine Schatzkiste an Lösungen für Probleme anzueignen, ohne dass man von der Komplexität echter Problem erschlagen wird. Kennt man die typischen Lösungswege für viele gängige Teilprobleme, wird man später ein richtig guter Programmierer, denn oft sind komplexe Probleme auf solche Probleme reduzierbar. Hier hast du jetzt bloß eine sehr spezielle if-Kaskade nur für Galgenmännchen gelernt, die du nirgendwo sonst benutzen kannst. Die allgemeine Lösung hätte dich hingegen allgemein anwendbares Wissen über das Verarbeiten von Sequenzen gelehrt.

    Du wärst auch sicherlich in vielen Fällen schneller, wenn du den Ratschlag zu Herzen nimmst. Wäre das gesuchte Wort "Donaudampfschifffahrtskapitänspatent" gewesen, hättest du gewiss sehr lange gebraucht, mit der allgemeinen Lösung aber auch nicht wesentlich länger als 10 Minuten.