Fehler in Ausgabe [geloest]



  • Gut, aber das clear schadet nicht. Ich habe in der wait Funktion immer alle drei Anweisungen drin stehen, damit es in jeder Situation funktioniert.



  • Ok, merk ich mir 🙂

    Nun wollte ich eine while-Schleife einbauen:

    Ausruestung Werkzeug_X;
    	std::cout << "\n\nBei Eingabe \"0\" Abbruch\n";
    	while (Werkzeug_X.Nummer != 0) // Wiederholungen solange Werkzeug_X.Nummer!= 0
    	{
    	std::cout << "\nGeben Sie die Nummer ein: \n";
    	std::cin >> Werkzeug_X.Nummer;
    	std::cout << "\nGeben Sie den Namen ein: \n";
    	std::cin >> Werkzeug_X.Name;
    	std::cout << "\nGeben Sie den Wert ein: \n";
    	std::cin >> Werkzeug_X.Wert;
    	werkzeug.push_back( Werkzeug_X );
    
    	W_Werkzeug(werkzeug); // Rueckgabe
    	}
    

    Funktioniert soweit. Diesmal das Problem, dass bei 0 nicht abgebrochen wird, woran liegt das? 😕



  • Da wird bei 0 schon abgebrochen. 😮 Wieso sollte es nicht abbrechen?



  • Ist jetzt schwer zu sagen, weil ich nicht weiß was vorher passiert, aber ich vermute, dass die Schleife gar nicht ausgeführt wird, da Werkzeug_X.Nummer nicht initialisiert ist. Probier mal die do-while-Schleife :

    Ausruestung Werkzeug_X;
        std::cout << "\n\nBei Eingabe \"0\" Abbruch\n";
        do // Wiederholungen solange Werkzeug_X.Nummer!= 0
        {
        std::cout << "\nGeben Sie die Nummer ein: \n";
        std::cin >> Werkzeug_X.Nummer;
        std::cout << "\nGeben Sie den Namen ein: \n";
        std::cin >> Werkzeug_X.Name;
        std::cout << "\nGeben Sie den Wert ein: \n";
        std::cin >> Werkzeug_X.Wert;
        werkzeug.push_back( Werkzeug_X );
    
        W_Werkzeug(werkzeug); // Rueckgabe
        }
        while (Werkzeug_X.Nummer != 0);
    


  • Ja, aber es wird dann noch der Name und Wert abgefragt und ausgegeben.
    Ich weiß aber nicht, wie ich das anstellen soll, dass er bei 0 sofort abbricht, ohne dabei diese beiden Eingaben aus der Schleife zu nehmen.
    Könnte ich break dafür einsetzen oderm gibt es etwas sinnvolleres, tut mir Leid, noch etwas müde und Kaffee schmeckt momentan net 😃

    EDIT: mit der do-while-Schleife passiert dasselbe. 😕



  • xStrykex schrieb:

    Ja, aber es wird dann noch der Name und Wert abgefragt und ausgegeben.

    Logisch, ein C+++-Programm wird von oben nach unten abgearbeitet. Und nach deine Eingabe von Nummer steht nunmal std::cout << "\nGeben Sie den Namen ein: \n"; . D.h. du musst nach der Eingabe von Nummer eine if-Anweisung einbauen und falls die Bedingung wahr ist, die Schleife mit break beenden.



  • Habe es jetzt so gelöst:

    Ausruestung Werkzeug_X;
    	std::cout << "\n\nBei Eingabe \"0\" Abbruch\n";
    	do
    	{
    	std::cout << "\nGeben Sie die Nummer ein: \n";
    	std::cin >> Werkzeug_X.Nummer;
    	if (Werkzeug_X.Nummer != 0)
    	{
    		std::cout << "\nGeben Sie den Namen ein: \n";
    		std::cin >> Werkzeug_X.Name;
    		std::cout << "\nGeben Sie den Wert ein: \n";
    		std::cin >> Werkzeug_X.Wert;
    		werkzeug.push_back( Werkzeug_X );
    	}
    	else
    		break;
    
    	W_Werkzeug(werkzeug); // Rueckgabe
    	}
    	while (Werkzeug_X.Nummer != 0);
    

    klappt 🙂



  • Joa, es funktioniert, schau es dir aber mal nochmal genau an. Finest du es nicht etwas komisch. 😃 Wenn du die if so machst, dann wäre ein break nicht mehr nötig, wenn du eine gewisse Zeile wo anders hin verschiebst.

    PS: ich hatte eine andere if-Bedingung im Sinne. 😃



  • Hoffe du meinst es so 😃

    Ausruestung Werkzeug_X;
    	std::cout << "\n\nBei Eingabe \"0\" Abbruch\n";
    	do
    	{
    	std::cout << "\nGeben Sie die Nummer ein: \n";
    	std::cin >> Werkzeug_X.Nummer;
    	if (Werkzeug_X.Nummer == 0)
    		break;
    	std::cout << "\nGeben Sie den Namen ein: \n";
    	std::cin >> Werkzeug_X.Name;
    	std::cout << "\nGeben Sie den Wert ein: \n";
    	std::cin >> Werkzeug_X.Wert;
    	werkzeug.push_back( Werkzeug_X );
    
    	W_Werkzeug(werkzeug); // Rueckgabe
    	}
    	while (Werkzeug_X.Nummer != 0);
    

    So klappt es auch 🙂



  • Richtig. 😃



  • Ok, ich danke Euch für die Hilfe, natürlich danke ich vor allem Dir, out. 🙂

    MfG Stryke


Anmelden zum Antworten