<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[While schleife mit Buchstaben beenden!]]></title><description><![CDATA[<p>Hi,</p>
<p>bin Student (1. Semester) und habe hier eine Aufgabe die ich nicht schaffe zu lösen.</p>
<p>Schreiben Sie ein Programm, das eine Reihe von Zahlen einliest und in einem vector&lt;double&gt; Container speichert.<br />
Nachdem der Benutzer eine beliebige Anzahl von Zahlen eingegeben hat,<br />
fragt das Programm, wie viele Zahlen davon aufaddiert werden sollen.<br />
Lautet die Antwort n, werden die ersten n Elemente des vector Containers sowie deren Summe ausgegeben.</p>
<p>Beispielsweise:<br />
Geben Sie einige Zahlen ein (mit 'q' beenden Sie die Eingabe):<br />
12.3 1.23 0.13 24 1.5 q<br />
Wie viele Zahlen sollen aufaddiert werden: 3<br />
Die Summe der 3 Elemente 12.3, 1.23, und 0.13 ist 13.66.<br />
Verwenden Sie Ausnahmen, um möglichst alle Fehler zu behandeln. Behandeln Sie v.a. alle möglichen Eingaben. Stellen Sie auch sicher, dass eine vernünftige Fehlermeldung für die Ausnahme ausgegeben wird, wenn mehr Zahlen addiert werden sollen als im vector vorhanden sind.<br />
_________________________________________________________________</p>
<p>Da unser Prof. naja... nicht sehr gut erklären kann (Klartext ich raff nix!) muss ich mir halt alles selber nochmal anschauen und zusammen suchen.</p>
<p>Ich habe mich schon mal dran gesetzt, Problem ist bei mir aber das ich im double kein 'q' zum beenden speichern kann...<br />
naja seht selbst</p>
<pre><code>//Alle Header
#include &lt;iostream&gt;
#include &lt;vector&gt;

//Weil ich faul bin!
using namespace std;

//Was alles noch so gebraucht wird...
vector&lt;double&gt; vec;
double input {};

//Ab hier gehts los!
int main () 
{
    //Start
    cout &lt;&lt; &quot;Programm start: &quot; &lt;&lt; endl;
    //Eingabe Befehl
    cout &lt;&lt; &quot;Zahlenfolge eingeben. Beenden mit 'q': &quot; &lt;&lt; endl;

    while (cin != 'q')
    {
    cin &gt;&gt; input;
    vec.push_back(input);
    cout &lt;&lt; &quot;Gespeichert, nächste Zahl...&quot; &lt;&lt; endl;  
    }

    return 0;
}
</code></pre>
<p>ich versuche sozusagen erstmal wenn 'q' dann soll die schleife beendet werden...</p>
<p>danke schon mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/332692/while-schleife-mit-buchstaben-beenden</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 16:37:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332692.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 17 May 2015 12:25:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to While schleife mit Buchstaben beenden! on Sun, 17 May 2015 12:25:09 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>bin Student (1. Semester) und habe hier eine Aufgabe die ich nicht schaffe zu lösen.</p>
<p>Schreiben Sie ein Programm, das eine Reihe von Zahlen einliest und in einem vector&lt;double&gt; Container speichert.<br />
Nachdem der Benutzer eine beliebige Anzahl von Zahlen eingegeben hat,<br />
fragt das Programm, wie viele Zahlen davon aufaddiert werden sollen.<br />
Lautet die Antwort n, werden die ersten n Elemente des vector Containers sowie deren Summe ausgegeben.</p>
<p>Beispielsweise:<br />
Geben Sie einige Zahlen ein (mit 'q' beenden Sie die Eingabe):<br />
12.3 1.23 0.13 24 1.5 q<br />
Wie viele Zahlen sollen aufaddiert werden: 3<br />
Die Summe der 3 Elemente 12.3, 1.23, und 0.13 ist 13.66.<br />
Verwenden Sie Ausnahmen, um möglichst alle Fehler zu behandeln. Behandeln Sie v.a. alle möglichen Eingaben. Stellen Sie auch sicher, dass eine vernünftige Fehlermeldung für die Ausnahme ausgegeben wird, wenn mehr Zahlen addiert werden sollen als im vector vorhanden sind.<br />
_________________________________________________________________</p>
<p>Da unser Prof. naja... nicht sehr gut erklären kann (Klartext ich raff nix!) muss ich mir halt alles selber nochmal anschauen und zusammen suchen.</p>
<p>Ich habe mich schon mal dran gesetzt, Problem ist bei mir aber das ich im double kein 'q' zum beenden speichern kann...<br />
naja seht selbst</p>
<pre><code>//Alle Header
#include &lt;iostream&gt;
#include &lt;vector&gt;

//Weil ich faul bin!
using namespace std;

//Was alles noch so gebraucht wird...
vector&lt;double&gt; vec;
double input {};

//Ab hier gehts los!
int main () 
{
    //Start
    cout &lt;&lt; &quot;Programm start: &quot; &lt;&lt; endl;
    //Eingabe Befehl
    cout &lt;&lt; &quot;Zahlenfolge eingeben. Beenden mit 'q': &quot; &lt;&lt; endl;

    while (cin != 'q')
    {
    cin &gt;&gt; input;
    vec.push_back(input);
    cout &lt;&lt; &quot;Gespeichert, nächste Zahl...&quot; &lt;&lt; endl;  
    }

    return 0;
}
</code></pre>
<p>ich versuche sozusagen erstmal wenn 'q' dann soll die schleife beendet werden...</p>
<p>danke schon mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453801</guid><dc:creator><![CDATA[Domeyy]]></dc:creator><pubDate>Sun, 17 May 2015 12:25:09 GMT</pubDate></item><item><title><![CDATA[Reply to While schleife mit Buchstaben beenden! on Sun, 17 May 2015 12:49:51 GMT]]></title><description><![CDATA[<p>cin != 'q' macht keinen Sinn, ist aber schon nah dran.<br />
Du willst wissen, ob das nächste Zeichen q ist, also musst du das auch fragen:<br />
while (std::cin.peek() != 'q')<br />
cin.peek() liefert das nächste Zeichen zurück, ohne es einzulesen. Das heißt nach der Schleife steht das 'q' noch im Stream und muss mit std::cin.get() daraus entfernt werden.<br />
Problematisch sind lediglich Leerzeichen, die müssen vor dem peek() übersprungen werden. Das kann std::ws machen, std::cin &gt;&gt; std::ws überspringt alle Leerzeichen/Newlines/etc. aus dem Stream.<br />
Kombiniert ergibt das:<br />
while ((std::cin &gt;&gt; std::ws).peek() != 'q')<br />
Das funktioniert weil std::cin &gt;&gt; std::ws den Stream selbst zurückliefert, auf ihm kann dann peek() aufgerufen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453805</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 17 May 2015 12:49:51 GMT</pubDate></item><item><title><![CDATA[Reply to While schleife mit Buchstaben beenden! on Sun, 17 May 2015 14:58:00 GMT]]></title><description><![CDATA[<p>Super, danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453813</guid><dc:creator><![CDATA[Domeyy]]></dc:creator><pubDate>Sun, 17 May 2015 14:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to While schleife mit Buchstaben beenden! on Sun, 17 May 2015 15:31:55 GMT]]></title><description><![CDATA[<p>So, bin jetzt am ende der Aufgabe angelangt, da stellt sich mir wieder ein Problem in den Weg.</p>
<p>Also ich soll dann N zahlen vom in den Vector befindliche Zahlen addieren.<br />
Eigentlich sollte mich mein Programm fragen wie hoch N sein soll, aber er überspringt einfach meine Anfrage (siehe Z. 43 )</p>
<pre><code>//Alle Header
#include &lt;iostream&gt;
#include &lt;vector&gt;

//Weil ich faul bin!
using namespace std;

//Was alles noch so gebraucht wird...
vector&lt;double&gt; vec;
double input {};

//Ab hier gehts los!
int main () 
{
    //Start
    cout &lt;&lt; &quot;Programm start: &quot; &lt;&lt; endl;
    //Eingabe Befehl
    cout &lt;&lt; &quot;Zahlenfolge eingeben. Beenden mit 'q': &quot; &lt;&lt; endl;

    //while schleife, mit der Bedingung: machen, solange cin nicht 'q'
    while ((cin &gt;&gt; ws).peek() != 'q') //https://www.c-plusplus.net/forum/332692
    {
    cin &gt;&gt; input;
    if (!cin) //Eine schöne Fehlermeldung :3
    {
        cerr &lt;&lt; &quot;Bitte nur Zahlen (oder 'q') eingeben!&quot; &lt;&lt; endl;
        cerr &lt;&lt; &quot;Programm erfordert neustart!&quot; &lt;&lt; endl;
                return -1;
    }

    vec.push_back(input); //Wert input an letzter Stelle des Vectors drangehängt
    cout &lt;&lt; &quot;Gespeichert, nächste Zahl...&quot; &lt;&lt; endl;  
    }

    //--------------------------------------------------------------------------

    cout &lt;&lt; &quot;Eingabe wurde beendet. &quot; &lt;&lt; endl &lt;&lt;
            &quot;Wie viele Zahlen sollen aufaddiert werden?&quot; &lt;&lt; endl;

    int summe {};
    double result {};

    cin &gt;&gt; summe; //summe soll angeben wie viele  addiert werden!

    /*if (!cin)
    {
        cerr &lt;&lt; &quot;Ungueltige Eingabe!&quot; &lt;&lt; endl;
        cerr &lt;&lt; &quot;Programm erfordert neustart!&quot; &lt;&lt; endl;
        return -2;
    }*/

    int vectorSize {};
    vectorSize = vec.size();

    while (summe &lt; vectorSize )
    {       
        result = result + vec.at(summe);
        ++summe;
    }

    cout &lt;&lt; &quot;Die Zahlen ergeben zusammen: &quot; &lt;&lt; result &lt;&lt; endl;

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2453816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453816</guid><dc:creator><![CDATA[Domeyy]]></dc:creator><pubDate>Sun, 17 May 2015 15:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to While schleife mit Buchstaben beenden! on Sun, 17 May 2015 16:02:16 GMT]]></title><description><![CDATA[<pre><code>std::cin.sync();
	cin &gt;&gt; summe; //summe soll angeben wie viele  addiert werden! 

				  /*if (!cin)
				  {
				  cerr &lt;&lt; &quot;Ungueltige Eingabe!&quot; &lt;&lt; endl;
				  cerr &lt;&lt; &quot;Programm erfordert neustart!&quot; &lt;&lt; endl;
				  return -2;
				  }*/
</code></pre>
<p>Edit:<br />
Wie Nathan schon sagte, liest peek() nur die Zeichen aus dem Eingabestrom und dementsprechend verbleibt das 'q' im Eingabestrom und wird mit dem cin &gt;&gt; für die summe ausgelesen. Die Summe ist dann vermutlich 0, oder der ASCII-Wert von 'q' (113).</p>
<p>Ps: Sorri Nathan <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453817</guid><dc:creator><![CDATA[NeeLa]]></dc:creator><pubDate>Sun, 17 May 2015 16:02:16 GMT</pubDate></item><item><title><![CDATA[Reply to While schleife mit Buchstaben beenden! on Sun, 17 May 2015 16:24:59 GMT]]></title><description><![CDATA[<p>WIe ich schon sagte, du musst das 'q' aus dem Stream entfernen.<br />
Dazu kannst du cin.get() oder cin.ignore() verwenden:</p>
<pre><code>while ((cin &gt;&gt; ws).peek() != 'q') //https://www.c-plusplus.net/forum/332692
{
   ...  
}
cin.ignore(); // überspringe q
</code></pre>
<p>cin.sync() ist eher nicht geeignet, das Verhalten ist nicht exakt spezifiziert und nur unter Visual Studio einem ignore() aller Zeichen entspricht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453821</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 17 May 2015 16:24:59 GMT</pubDate></item><item><title><![CDATA[Reply to While schleife mit Buchstaben beenden! on Sun, 17 May 2015 17:26:46 GMT]]></title><description><![CDATA[<blockquote>
<p>cin.sync() ist eher nicht geeignet, das Verhalten ist nicht exakt spezifiziert und nur unter Visual Studio einem ignore() aller Zeichen entspricht.</p>
</blockquote>
<p>Glatt vergessen, dass das Enter nicht eingelesen wird. Dann wäre nämlich zwei cin.ignore() nötig gewesen und das sieht blöd aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453826</guid><dc:creator><![CDATA[NeeLa]]></dc:creator><pubDate>Sun, 17 May 2015 17:26:46 GMT</pubDate></item></channel></rss>