While schleife



  • @Th69 sagte in While schleife:

    @wob: Du hast gerade unnötigerweise den Code verkompliziert 😉 ->

    cout << "Beginnen?\n";
    while (istJa(liesString()))
    {
        quiz();
        cout << "Nochmal?\n";
    }
    

    Naja, das geht aber nur, solange du keine else-Fälle hast. Insbesondere nach dem initialen "Beginnen?" kann ich mir sowas vorstellen wie ein cout von "Schade, dann wurde ich armes Programm ja ganz umsonst gestartet" 🙂 Da wäre dann auch ein eary return möglich, wenn man das if vor-not-et.



  • Ok ich hab jetzt die erste while Schleife ersetzt gegen einer if Funktion.
    Eine do while Schleife nimmt das Programm nicht an. Ich denke weil die fragen.fragenanzahl auf 3 fragen laufen. Und eine do while Schleife würde doch noch ein viertes mal laufen oder nicht?
    Wahrscheinlich ist die Lösung zu dem Problem einfach aber ich komme nicht drauf. Ich probiere es ja jetzt schon länger aber ich komme nicht darauf zurück . Ich vermute das es das return 0 ist was das Programm ja beendet.
    Aber wenn ich es entferne meckert das Programm weil ich es in #include FragenAntworten.h als rückgabe (return Antwort [wert] ) benutze.

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    class Fragen
    {
    public:
        Fragen() {};
       
    
        const static int fragenAnzahl = 3;
    
        string getFrage(int wert)
        {
            string Frage[fragenAnzahl];
    
            Frage[0] = "frage1";
            Frage[1] = "frage2";
            Frage[2] = "frage3";
    
            return Frage[wert];
    
        }
    private:
    };
    class Antworten
    {
    public:
    
        Antworten() {};
        
    
        const static int antwortenAnzahl = 3;
    
        string getAntworten(int wert)
        {
            string Antwort[antwortenAnzahl];
    
            Antwort[0] = "antwort1";
            Antwort[1] = "antwort2";
            Antwort[2] = "antwort3";
    
            return Antwort[wert];
    
        }
    
    private:
    
    };
    


  • @Dpascalm du weißt schon, dass du da ungültigen speicher zurück gibst?



  • @Wade1234 sagte in While schleife:

    @Dpascalm du weißt schon, dass du da ungültigen speicher zurück gibst?

    Wo tut @Dpascalm das?



  • @wob man kann unter c++ teile aus lokal in funktionen angelegten arrays zurück geben?



  • Solange das nicht als Referenz oder Pointer erfolgt: warum sollte das nicht gehen?



  • @wob es sieht halt irgendwie komisch aus.



  • @Wade1234 Finde ich nicht. Sieht ganz normal aus.

    Man fragt sich hier aber natürlich, warum immer erst ein Array von 3 Strings erzeugt wird, das dann wieder verworfen wird, wenn man eigentlich nur einen String haben will.



  • @wob achso dann hab ich mich wohl geirrt.🙄



  • @Wade1234 An der Stelle wird ja kein Teil eines lokalen Arrays zurück gegeben, sondern ein String. D.h. ein Wert des Arrays wird in ein String kopiert und der wird zurück gegeben. Das sollte in C mit den entsprechenden Datentypen auch gehen, oder?


Log in to reply