galgenmännchen



  • die überschrift sagt ja schon mein vorhaben 😉

    nur weiss ich leider nicht wie man wenn man zB e eingibt, alle 'e' im wort angezeigt werden...hab schon bissi was ausprobiert, aber nichts gefunden...



  • du kannst mit deinstring.find("suchwort") danach suchen und dieses weiterverarbeiten.

    mfg



  • char* str = "test";
    bool* show = new bool [strlen(str)];
    for(int i = 0; i < strlen(str); ++i)
        show[i] = false;
    
    while(sonstwas passiert, versuche aus, was auch immer)
    {
        // String anzeigen
        for(int i = 0; i < strlen(str); ++i)
        {
            if(!show[i])
                cout << '*';
            else
                cout << str[i];
        }
        cout << endl;
    
        // Zeichen einlesen
        char c = getch();
    
        // Gefundene aufdecken
        for(int i = 0; i < strlen(str); ++i)
        {
            if(str[i] == c)
                show[i] = true;
        }
    }
    
    delete [] show;
    

    Das wäre mal ein Ansatz.

    MfG SideWinder



  • vielen dank

    *edit*
    omg...kriegs grad net gebacken
    wie sag ich ihm das er die schleife beenden soll, wenn alle zeichen aufgedeckt sin?!

    also nach dem prinzip

    if(alles aufgedeckt)
    break;

    achja, die zeile kapier ich nich ganz:

    bool* show = new bool [strlen(str)];



  • du musst bei jedem durchlauf prüfen, ob noch eins nicht aufgedeckt ist. dann gehts weiter, sonst ist schluss.

    // Gefundene aufdecken und gewinnprüfung
    		ende=true;
    		for(i = 0; i < strlen(str); ++i) 
    		{ 
    			if(str[i] == c) 
    				show[i] = true; 
    
    			if (!show[i])
    				ende=false;
    		}
    

    und oben dann

    while(!ende)
    


  • Hi

    bool* show = new bool [strlen(str)];
    

    Das new bool [strlen(str)]; veranlasst das der String zur laufzeit(Dynamisch !?)durchgezählt wird bzw durch strlen würd die länge der Zeichenkette ermittelt und abschließend eine binäre Null rangehängt um das Ende der Zeichenkette festzulegen. Achja und bool * ist einfach nur ein Zeiger der auf die Speicher-Adresse von show zeigt.
    ich hoffe ich hab nichts falsches gesagt. 😑

    PS: währ ein string * str = "blabla" nicht sinnvoller als char !?

    mfg



  • Also das was mein Vorredner da sagt erscheint mir größtenteils falsch / unverständlich.

    bool* show = new bool [strlen(str)];
    

    hiermit wird n array angelegt, und zwar in der größe "anzahl zeichen von str". bei dem beispiel mit "test" wären das also 4. also ein show[4]. strlen(str) gibt die länge von str zurück. ist zwar in dem beispiel was überflüssig, weil ja zur zeit des kompilierens schon feststeht, wie groß str ist, aber ich denke mal, das war gedacht, um zu zeigen, wie man das später dann mit einem beliebigen wort macht.

    das mit der binären null is quatsch.

    was an char * nicht sinnvoll ist, kann ich nicht erkennen, jedoch weiß ich auch nicht so richtig was über string, gibts ja wohl in c nicht, und das programmier ich größtenteils. auf jeden fall gehts in c selbst nicht anders.



  • das mit der abbruch bedingung klappt nicht....kA warum...hab alles ausprobiert...funzt einfach net...

    wie kann ich die falschen buchstaben anzeigne lassen?!
    einfach cout<<c; geht janicht, weil c sich ja immer ändert un er dann halt immer c anzeigt, jedesma 1ma mehr halt...



  • if(c==str[i])
                {
                    show[i] = true;
                }
    
                else
                { 
                  //else anweisung
                }
    

    das problem ist, das auch wenn 'c' in 'str' enhalten ist, er trotzdem die else anweisung ausführt, y?



  • Hi

    Ich meine nicht das meine erklärung so falsch gewesen ist.
    Warum soll das mit der binären Null falsch sein ? strlen ist doch eine Stringfunktion und dafür da die länge eines Strings zu zählen und eine binäre Null anzuhängen damit der Compiler weiss wo der String zu ende ist.
    Noch zu erwähnen sei das durch new die Informationen auf dem Heap-speicher abgelegt werden.

    mfg



  • strlen hängt nichts an, strlen gibt nur die länge eines strings zurück. und übrigens, was ist der unterschied zwischen ner binären und ner dezimalen null?



  • Es würd was rangehängt. Jedenfalls sagt mein C++ Buch was anderes. ⚠
    Aber egal ....
    hmmm der Unterschied !? Darauf weiß ich jetzt keine Antwort 🙄

    mfg



  • dann schmeiß das buch weg ;).

    strlen
    Get the length of a string.

    size_t strlen( const char *string );

    Return Value

    Each of these functions returns the number of characters in string, excluding the terminal NULL. No return value is reserved to indicate an error.

    Parameter

    string

    Null-terminated string

    Remarks

    Each of these functions returns the number of characters in string, not including the terminating null character. wcslen is a wide-character version of strlen; the argument of wcslen is a wide-character string. wcslen and strlen behave identically otherwise.

    das bekommt einen string. der ist in c mit einer 0 ('\0') abgeschlossen. strlen zählt die zeichen von dem übergebenen pointer bis zum abschließenden '\0' ...

    Bezüglich Binärer Null und dezimaler Null: 0 = 0 :). Wohingegen 0 != '0' .. Ich weiß nicht, ob du das meinst, also das 0 natürlich nicht den ASCII Wert 0 hat. Wie auch immer...



  • hi

    @mata:
    Du hast doch recht 🙂 hab jetzt noch mal in mein Buch geschaut und es steht doch nix von anhängen drin 😮 Da habe ich wohl falsch gedacht .....
    Gut das wir das jetzt klargestellt haben 😉
    ehm wie bist du jetzt eigentlich auf das Tehma binäre null gekommen !? 😕

    mfg



  • na weil du irgendwas von ner binären null geschrieben hast ;):

    SpIriT alias PrOjEcT101 schrieb:

    Hi

    bool* show = new bool [strlen(str)];
    

    Das new bool [strlen(str)]; veranlasst das der String zur laufzeit(Dynamisch !?)durchgezählt wird bzw durch strlen würd die länge der Zeichenkette ermittelt und abschließend eine binäre Null rangehängt um das Ende der Zeichenkette festzulegen. Achja und bool * ist einfach nur ein Zeiger der auf die Speicher-Adresse von show zeigt.
    ich hoffe ich hab nichts falsches gesagt. 😑

    PS: währ ein string * str = "blabla" nicht sinnvoller als char !?

    mfg



  • aso jo. ja wie gesagt da würd nix rangehängt.

    Jetzt versteh ich auch was du damit gemeint hast:

    und übrigens, was ist der unterschied zwischen ner binären und ner dezimalen null?

    Muss also nicht unbedingt eine >> binäre << Null sein am ende einer Zeichenkette oder wie ?
    Ist ja egal. ist ja beides das gleiche. ne 😕

    mfg



  • back to topic jungs 😉

    häng immer noch an den 2 probs:
    1. wie sag ich ihm das alle buchstaben aufgedeckt sin?
    2.

    if(c==str[i])
                {
                    show[i] = true;
                }
    
                else
                {
                  //else anweisung
                }
    

    geht er da auch in die else anweisung, obwohl c in str enthalten is....



  • HELP!! plz



  • *topic wieder hochschieb*



  • Was genau ist dein Problem?

    MfG SideWinder



  • häng immer noch an den 2 probs:
    1. wie sag ich ihm das alle buchstaben aufgedeckt sin?
    2.

    if(c==str[i])
                {
                    show[i] = true;
                }
    
                else
                {
                  //else anweisung
                }
    

    geht er da auch in die else anweisung, obwohl c in str enthalten is....


Anmelden zum Antworten