Noob Fragen (7); Konsole nimmt die Eingaben nicht auf!?!



  • Hey euer Noob wieder am Start mit nem neuen Problem und zwar wollte ich ein Programm-Schnipsel schreiben, der die Eingaben des Anwenders addiert und auspuckt ... Nun wie erwartet funktioniert etwas nicht.
    Die Konsole öffnet sich ➡ ich tippe 4 Zahlen ein ( in verschiedenen Weisen, also mal 3456, 3 4 5 6 oder 3 *enter* , 4 *enter* , 5 *enter* , 6 *enter*) ➡ und die Konsole reagiert dann einfach nicht 😕

    Hier der Schnip:

    #include <iostream>
    using namespace std;
    int main ()
    {
        int sum = 0;
        int value = 0;
        while (cin >> value)
            sum += value;
        cout << "The sum is: " << sum << endl;
        return 0;
    }
    

    Was habe ich falsch gemacht und was muss ich einbauen damit er die Zahlen annimmt?



  • Könntest du aufhören, deine Fragen durchzunummerieren?

    Da du eine while Schleife ums Einlesen hast, wird er unendlich auf weitere Zahlen warten, ohne was anderes zu machen.



  • Du moch was tun um die while Schleife zu verlassen.



  • Mechanics schrieb:

    Könntest du aufhören, deine Fragen durchzunummerieren?

    Hey das ist jetzt mein Markenzeichen Mecha und vielleicht schreibe ich ja mal ein Logbuch über mein Weg als Programmierer ... da können Nummerierungen ganz hilfreich sein.

    fwbp34 schrieb:

    Du moch was tun um die while Schleife zu verlassen.

    Und wie schaffe ich das? Kann ich irgendwie etwas eingeben, dass er nach einem *Enter* anfangen soll zu addieren? Vielleicht sowas wie If (*Enter*) Then (stop the loop)
    Jap bin ganz kreativ heute :p



  • DerNewb schrieb:

    und vielleicht schreibe ich ja mal ein Logbuch über mein Weg als Programmierer ...

    Ich bin ganz froh wenn ich mich nicht dran erinnere (siehe auch unten in grau)



  • Tim06TR schrieb:

    Ich bin ganz froh wenn ich mich nicht dran erinnere (siehe auch unten in grau)

    😮 Ach da gibts nix zu schämen. An den Antworten eines Mannes erkennst du zwar seine Intelligenz, aber an den Fragen erkennst du seine Weisheit.

    Und nochmal zu meiner Frage. Ich habe irgendwo mal diesen Break-Befehl gesehen, aber ich weiß nicht wie ich den wirklich benutzen soll 😕



  • DerNewb schrieb:

    Mechanics schrieb:

    Könntest du aufhören, deine Fragen durchzunummerieren?

    Hey das ist jetzt mein Markenzeichen Mecha und vielleicht schreibe ich ja mal ein Logbuch über mein Weg als Programmierer ... da können Nummerierungen ganz hilfreich sein.

    Ja, das war ja auch nur eine Frage, kein Vorschlag. Jetzt weiß ich, dass du das nicht kannst, und sogar, warum 😉

    Dir reicht doch ein if statt while.



  • Mechanics schrieb:

    Dir reicht doch ein if statt while.

    Das mag zwar sein, aber 1. geht das ja nur ums Prinzip, also ich meine, ich möchte ja den Umgang mit der while Schleife lernen und 2. jetzt spoiler nicht 😡 beim if-statement bin ich noch nicht. Das kommt erst in chapter 5 und bin gerade chapter 1 mittig. 🙄
    Mecha, Mecha, Mecha ...

    Edit: Ok der if-loop kommt direkt danach ^^ habs übersehen SORRY



  • DerNewb schrieb:

    Hey euer Noob wieder am Start mit nem neuen Problem und zwar wollte ich ein Programm-Schnipsel schreiben, der die Eingaben des Anwenders addiert und auspuckt ... Nun wie erwartet funktioniert etwas nicht.
    Die Konsole öffnet sich ➡ ich tippe 4 Zahlen ein ( in verschiedenen Weisen, also mal 3456, 3 4 5 6 oder 3 *enter* , 4 *enter* , 5 *enter* , 6 *enter*) ➡ und die Konsole reagiert dann einfach nicht 😕

    Wie jetzt, nach der vierten Zahl kannst du nichts mehr eingeben? Unwahrscheinlich.

    Dein Code ist völlig richtig. Die Schleife läuft, solange die Standardeingabe nicht beendet ("eof", end of file) ist (oder in einem anderen Fehlerzustand). Solange passiert halt keine Ausgabe, aber die Summe wird trotzdem berechnet. Wie beendet man die Standardeingabe? Unter Unix mit Ctrl+D, unter Windows mit Ctrl+Z.



  • Bashar schrieb:

    Wie jetzt, nach der vierten Zahl kannst du nichts mehr eingeben? Unwahrscheinlich.

    nene dass meinte ich nicht ... das war eine random-anzahl von zahlen also ich kann auch hunderte eingeben ... bei mir war halt das problem: was mache ich nachdem ich die 4 zahlen eingegeben habe? Die konsole erkennt ja nicht von selbst ok der Anwender will die Zahlen jetzt summiert haben.
    und wenn ich strg+z drücke dann kommt das hier : http://imgur.com/5TVIWNf

    Ich bin echt ein hoffnungsloser fall oder ? Wenn ich schon hier beim while-loop scheitere 😞



  • Nein, ganz trivial ist das mit den Streams auch nicht. Passt also alles 😉

    Du musst nur eine falsche Eingabe machen, damit die Prüfung innerhalb des Eingabestreams irgendwo merkt, dass da was falsch läuft (mal vereinfacht ausgedrückt). Und das macht man entweder per Strg+Z oder du gibst in exakt dem Fall mit den int's einen Buchstaben ein.



  • Ich kenn mich mit Windows nicht so gut aus. Es ist auf jeden Fall Strg+Z, evtl. nochmal Enter dahinter.

    Und das ist ganz klar etwas anderes als ein Fehler. Du kannst entweder einen Buchstaben eingeben, das ist ein Konvertierungsfehler. Du kannst auch deine Tastatur rausziehen oder anzünden, das ergibt vielleicht auch einen Fehler. Beides ist mehr oder weniger drastisch, die normalerweise vorgesehende Art und Weise ist EOF, also Strg+Z.



  • ...



  • DerNewb schrieb:

    Vielleicht sowas wie If (*Enter*) Then (stop the loop)
    Jap bin ganz kreativ heute :p

    Hallo,
    genauso geht es;-)

    while (cin >> value){
        	if(value==0) break;
        	sum += value;
        }
    

    Mit Enter wird es schwierig, da du damit dein cin bestätigst...
    MFG John.

    Edit: Abbruch wie bei Swordfish mit 0



  • Danke alle zusammen erstmal und besonderen dank an Fishy und johny, aber fishy jetzt mal im Ernst ... mit Codeschnipseln also visueller Hilfe kann ich das ja wirklich besser lernen, aber 70% was du angewandt hast, kenne ich nicht mal. Und John genau das meinte ich. Einfach, praktisch und die genaue Lösung für mein Problem. Kriegst ein Newbcookie von mir. Bei den anderen kann ich mich auch nur für die Geduld und das Engagement bedanken , obwohl ich damit nix anfangen konnte bzw nur wenig.
    Mfg,
    euer Nooby



  • ...



  • Swordfish schrieb:

    int sum{};
    
    	for( std::size_t i{ 1 }; i < 5; ++i ) {
    

    Strange aquatic life form trying to be cute.


Anmelden zum Antworten