Reading an Unknown Number of Inputs



  • out schrieb:

    Zum 1. Programm: Die Konsole geht auf. Dann gibst du beliebig viele Zahlen hintereinander ein, mit Leerzeichen getrennt. Bist du fertig mit deiner Zahleneingabe, drückst du ganz zum Schluss "Enter". Jetzt stehen im Eingabepuffer beliebig viele Zahlen, die der operator>> nach und nach aus dem Eingabepuffer (pro Schleifendurchgang eine Zahl) holt. Ja und im Schleifenrumpf wird die Zahl, die eben im Schleifenkopf geholt wurde, einfach zu sum aufaddiert.

    Ja, solange die Bedingung wahr ist, wird die Schleife ausgeführt. Ja, solang val <= 10 ist.

    cin >> value : Du gibst eine Zahl ein. Die landet im Eingabepuffer. Mit operator>> extrahierst du die Zahl aus dem Eingabepuffer und speicherst sie in value ab. Zum Schluss der Operation wird das Objekt cin zurückgegeben.... operator>> ist ja eine Funktion: istream& operator>>(istream&,T&) . Weil istream den operator bool implementiert, kannst du ein istream-Objekt, also cin, zu bool konvertieren. Ist das cin-Objekt nach einer Operation in einem guten Zustand, ergibt die Konvertierung true, ist es in einem schlechten Zustand ergibt die Konvertierung false (die Schleife wird abgebrochen).

    omg meine Rechtschreibfehler, mal korrigiert.



  • Du musst noch irgendwie sagen, daß die Eingabe abgeschlossen ist. Das erreichst du entweder, in dem du den Stream (hier: std::cin ) in einen Fehlerzustand zwingst ( operator>>() versucht einen int zu extrahieren, du gibst ihm aber einen Buchstaben) oder du gibst EOF ein. Unter windows ist das strg + z , unter UN*X strg + d .



  • Vielen Dank euch beiden. 🙂



  • Sehe ich das richtig, man ist hier zwar oft so pingelig, aber es ist praktisch schnurz ob ich jetzt std::endl oder '/n' fuer eine neue Zeile verwende?

    Ich mein, wenn sogar ein empfohlenes Buch das mit endl macht, wo ich gehoert habe, dass man '/n' nehmen soll



  • Weiß nicht? Hunger? Fang: ><((((°>



  • hardware schrieb:

    Sehe ich das richtig, man ist hier zwar oft so pingelig, aber es ist praktisch schnurz ob ich jetzt std::endl oder '/n' fuer eine neue Zeile verwende?

    Ich mein, wenn sogar ein empfohlenes Buch das mit endl macht, wo ich gehoert habe, dass man '/n' nehmen soll

    Ach das Thema gabs doch schon oft. Nimmst du das, was dich anspricht. Stephan T Lavavej nimmt endl andauernd, wenn er es nimmt darfst du das auch:D



  • Dass von std::endl vor allem bei Dateistreams abzuraten ist und dass man z.B. Logs gerne in Dateien umleitet zweifelt hier hoffentlich niemand an. Und letztlich: Wieso habt ihr einen solchen Drang mehr zu tippen? 🙂

    Edit: Tippfehler.


  • Mod

    asfdlol schrieb:

    Wieso hab ihr einen solchen Drang mehr zu tippen? 🙂

    Vermutlich deutsches Tastaturlayout, wo '\n' eher unbequem zu tippen ist.



  • Findest du das wirklich? Ich tippe einen \ ohne Probleme in Nullkommanix.


  • Mod

    Swordfish schrieb:

    Findest du das wirklich? Ich tippe einen \ ohne Probleme in Nullkommanix.

    Wenn du '\' mit deutschem Layout im Nullkommanix tippen kannst, dann reist du beim Tippen von '\' auf US-Layout sogar in der Zeit zurück 😃 .

    Aber am schlimmsten ist das Gesamtkonstrukt "'\n'" (also mit Hochkommata). Shift+Taste, AtlGr+Taste, Taste, Shift+Taste. Im Gegensatz zu Taste, Taste, Taste, Taste, wenn man das Layout der Leute benutzt, die sich dieses Konstrukt ausgedacht haben.



  • SeppJ schrieb:

    Swordfish schrieb:

    Findest du das wirklich? Ich tippe einen \ ohne Probleme in Nullkommanix.

    Wenn du '\' mit deutschem Layout im Nullkommanix tippen kannst, dann reist du beim Tippen von '\' auf US-Layout sogar in der Zeit zurück 😃 .

    Gut. Ich stell' das Layout um und meld mich gestern wieder. 👍


Anmelden zum Antworten