<?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 neu beginnen lassen?]]></title><description><![CDATA[<p>Hallo Leute,<br />
bin noch recht neu in der Programmierwelt und habe nun folgendes Problem:</p>
<p>Ich habe aus Spaß ein Script erstellt, welches eine Eingabe auf Richtigkeit überprüft (ob es sich um eine Zahl handelt) und diese dann durch 2 teilt.</p>
<p>Sobald man ein falsches Zeichen, z.B. ein Ausrufezeichen eingibt, sollte eine Fehlermeldung kommen, was auch geschieht. Aber die Schleife beginnt nicht neu, sondern die Fehlermeldung wird dauerhaft wiederholt.</p>
<p>Hier ist der Code, ich hoffe mir kann jemand helfen.</p>
<p>[/cpp]</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main () {

float zahl;

while( true ){
    cout &lt;&lt; &quot;Bitte zahl eingeben, die durch 2 geteilt werden soll: &quot;;
// Eingabe der Zahl
    cin &gt;&gt; zahl;
// Prüfung ob Eingabe falsch ist (kein float) und Fehlermeldung
    if(cin.fail())
    cout &lt;&lt; &quot;Falsche Eingabe! Neue Eingabe bitte: &quot; &lt;&lt; endl;
// Wenn Eingabe float ist, berechnen
    else
    cout &lt;&lt; zahl / 2 &lt;&lt; endl;

}//while  
    return 0;
}//main
</code></pre>
<p>Danke im Voraus</p>
<p>Gruß</p>
<p>Luck3r</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/299560/while-schleife-neu-beginnen-lassen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 17:07:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/299560.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Feb 2012 22:01:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to While-Schleife neu beginnen lassen? on Mon, 13 Feb 2012 22:01:53 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
bin noch recht neu in der Programmierwelt und habe nun folgendes Problem:</p>
<p>Ich habe aus Spaß ein Script erstellt, welches eine Eingabe auf Richtigkeit überprüft (ob es sich um eine Zahl handelt) und diese dann durch 2 teilt.</p>
<p>Sobald man ein falsches Zeichen, z.B. ein Ausrufezeichen eingibt, sollte eine Fehlermeldung kommen, was auch geschieht. Aber die Schleife beginnt nicht neu, sondern die Fehlermeldung wird dauerhaft wiederholt.</p>
<p>Hier ist der Code, ich hoffe mir kann jemand helfen.</p>
<p>[/cpp]</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main () {

float zahl;

while( true ){
    cout &lt;&lt; &quot;Bitte zahl eingeben, die durch 2 geteilt werden soll: &quot;;
// Eingabe der Zahl
    cin &gt;&gt; zahl;
// Prüfung ob Eingabe falsch ist (kein float) und Fehlermeldung
    if(cin.fail())
    cout &lt;&lt; &quot;Falsche Eingabe! Neue Eingabe bitte: &quot; &lt;&lt; endl;
// Wenn Eingabe float ist, berechnen
    else
    cout &lt;&lt; zahl / 2 &lt;&lt; endl;

}//while  
    return 0;
}//main
</code></pre>
<p>Danke im Voraus</p>
<p>Gruß</p>
<p>Luck3r</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180781</guid><dc:creator><![CDATA[Programmierneulinghoch3]]></dc:creator><pubDate>Mon, 13 Feb 2012 22:01:53 GMT</pubDate></item><item><title><![CDATA[Reply to While-Schleife neu beginnen lassen? on Mon, 13 Feb 2012 22:13:37 GMT]]></title><description><![CDATA[<p>Das cin Objekt geht nach der Falscheingabe in einen Fehlerzustand, den du für eine erneute Eingabe erst beseitigen musst und die Zeichen, die nicht in die float Variable gesteckt werden konnten, bleiben im Eingabepuffer. Die müsstest du vor einer erneuten Eingabe ebenfalls entfernen.</p>
<p>Die Forensuche sollte dir auch noch zeigen wie das geht. Das Thema kommt häufig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180790</guid><dc:creator><![CDATA[quasselnImQuadrat]]></dc:creator><pubDate>Mon, 13 Feb 2012 22:13:37 GMT</pubDate></item><item><title><![CDATA[Reply to While-Schleife neu beginnen lassen? on Mon, 13 Feb 2012 22:18:44 GMT]]></title><description><![CDATA[<p>Da war jemand schneller. So würde es gehen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main()
{
	float zahl;
	while(true)
	{
		cout &lt;&lt; &quot;Bitte zahl eingeben, die durch 2 geteilt werden soll: &quot;;
		cin &gt;&gt; zahl;
		if(cin.fail())
		{
			cout &lt;&lt; &quot;Falsche Eingabe! Neue Eingabe bitte.\n&quot;;
			cin.clear(); cin.sync();
		}
		else cout &lt;&lt; zahl / 2 &lt;&lt; '\n';
	}
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2180791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180791</guid><dc:creator><![CDATA[Thuruk]]></dc:creator><pubDate>Mon, 13 Feb 2012 22:18:44 GMT</pubDate></item><item><title><![CDATA[Reply to While-Schleife neu beginnen lassen? on Mon, 13 Feb 2012 22:19:03 GMT]]></title><description><![CDATA[<p>Na wenn cin.fail() mal true war, dann bleibt das auch so, solange bis du cin.clear() aufrufst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180792</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 13 Feb 2012 22:19:03 GMT</pubDate></item><item><title><![CDATA[Reply to While-Schleife neu beginnen lassen? on Mon, 13 Feb 2012 23:58:15 GMT]]></title><description><![CDATA[<p>C++ ist keine Scriptsprache. *würg* *kotz*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180839</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 13 Feb 2012 23:58:15 GMT</pubDate></item><item><title><![CDATA[Reply to While-Schleife neu beginnen lassen? on Tue, 14 Feb 2012 00:01:17 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23275">@314159265358979</a><br />
Hihi.<br />
Da muss ich dir mal Recht geben, ist mir vorhin auch schon übel aufgestossen <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/2180840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180840</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 14 Feb 2012 00:01:17 GMT</pubDate></item><item><title><![CDATA[Reply to While-Schleife neu beginnen lassen? on Tue, 14 Feb 2012 01:22:16 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23275">@314159265358979</a> [...] Da muss ich dir mal Recht geben, [...]</p>
</blockquote>
<p>*ausdruck*, *einrahm*, *aufhäng*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180868</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Tue, 14 Feb 2012 01:22:16 GMT</pubDate></item><item><title><![CDATA[Reply to While-Schleife neu beginnen lassen? on Tue, 14 Feb 2012 01:57:40 GMT]]></title><description><![CDATA[<p>Thuruk schrieb:</p>
<blockquote>
<pre><code class="language-cpp">cin.sync();
</code></pre>
</blockquote>
<p>Ich glaube nicht, dass das macht, was du glaubst, dass es macht. Das Verhalten von std::istream::sync ist auf Default-Streams nicht in wirklich sinnvoller Weise definiert.</p>
<p>Die Definition (in C++03) läuft wie folgt: std::istream::sync erstellt einen sentry und ruft rdbuf()-&gt;pubsync() auf (vgl. 27.6.1.3 (35)). std::streambuf::pubsync ruft std::streambuf::sync auf (vgl. 27.5.2.2.2 (3)), und std::streambuf::sync ist, wenn nicht ggf. von einer Kindklasse etwas anderes spezifiziert wurde (das ist bei std::cin nicht der Fall), nur auf Ausgabeströmen überhaupt definiert:</p>
<p>ISO/IEC 14882:2003 27.5.2.4.2 (7) schrieb:</p>
<blockquote>
<p>Effects: Synchronizes the controlled sequences with the arrays. That is, if pbase() is non-null the characters between pbase() and pptr() are <strong>written to the controlled sequence.</strong> The pointers may then be reset as appropriate.</p>
</blockquote>
<p>Der code funktioniert übrigens bei mir (gcc 4.6 unter Linux) auch nicht. Es könnte eine Microsoft-Erweiterung sein wie fflush(stdin), oder reiner Zufall, der sich aus undokumentierten Implementationsdetails ergibt und jederzeit zu funktionieren aufhören kann; so oder so sollte man sich nicht darauf stützen, wenn es standardkonforme Alternativen gibt. Ich schlage</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;limits&gt;

void clear_input_stream(std::istream &amp;in = std::cin) {
  in.clear();
  in.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
}
</code></pre>
<p>vor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2180873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2180873</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 14 Feb 2012 01:57:40 GMT</pubDate></item><item><title><![CDATA[Reply to While-Schleife neu beginnen lassen? on Tue, 14 Feb 2012 13:38:50 GMT]]></title><description><![CDATA[<p>Vielen Dank für eure Antworten, so funktioniert es. Danke!</p>
<p>Und ich werde es in Zukunft natürlich unterlassen, das Wort Script im Zusammenhang mit C++ zu verwenden <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="😃"
    /> <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/2181020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2181020</guid><dc:creator><![CDATA[Programmierneulinghoch3]]></dc:creator><pubDate>Tue, 14 Feb 2012 13:38:50 GMT</pubDate></item></channel></rss>