<?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[Schleifen &amp;amp; Break?]]></title><description><![CDATA[<p>HAbe folgendes PRog in ANlehnung an Willms geschrieben.<br />
Soll eine bis zu zwanzigstellige Integerzahl einlesen und Quersumme ausgeben, sowie Summierung bei Eingabe eines falschen Zeichens (nicht-Ziffer) abbrechen.<br />
Habe dies auf zwei Arten zu realisieren versucht und beide Varianten hintereinandergeschalten:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;ctype.h&gt;                            // isdigit
using namespace std;

// Eigene Version.

int main()
    {
    char c;
    int qsum = 0, cnt;

    for (cnt = 0; (cnt &lt; 20) &amp;&amp; ((c=cin.get()) != '\n'); cnt++)
        {
        if(c &gt; '9' || c &lt; '0')
             {
             cout &lt;&lt; &quot;Mind. eine der Eingaben keine Ziffer. Quersumme bis zur Fehleingabe.\n\n&quot;;
             break;
             }

        qsum += c - '0';
        }
    cout &lt;&lt; &quot;Quersumme: &quot; &lt;&lt; qsum &lt;&lt; &quot;\n\n&quot;;

    for (cnt = 0; (cnt &lt; 20) &amp;&amp; ((c=cin.get()) != '\n'); cnt++)
        {
        if(!isdigit(c))
             {
             cout &lt;&lt; &quot;Mind. eine der Eingaben keine Ziffer. Quersumme bis zur Fehleingabe.\n\n&quot;;
             break;
             }

        qsum += c - '0';
        }
    cout &lt;&lt; &quot;Quersumme: &quot; &lt;&lt; qsum &lt;&lt; &quot;\n\n&quot;;

    system(&quot;pause&quot;);
    return 0;
    }
</code></pre>
<p>So, nun passiert folgendes:<br />
a) Wird die erste Zahl fehlerfrei eingegeben, wird die Quersumme ausgegeben und ich darf die zweite Zahl eingeben, die bei Fehleingabe zum erhoffen Programmabbruch führt.</p>
<p>b) Geb ich jedoch bei der ersten Zahl bereits eine Fehleingabe ein, wird auch die zweite Schleife abgebrochen.<br />
Dachte erst, es liegt an der break-Anweisung, hab dann mit &quot;goto&quot; in der ersten Schleife auf das Ende dieser verwiesen - gleicher Fehler.</p>
<p>Ich hoffe, ich konnt einigermaßen darlegen, was mein Problem ist.<br />
Vielen Dank für Eure Hilfe!</p>
<p>lG<br />
Tonikum</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207782/schleifen-amp-break</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 12:39:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207782.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Mar 2008 17:37:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schleifen &amp;amp; Break? on Tue, 11 Mar 2008 17:37:21 GMT]]></title><description><![CDATA[<p>HAbe folgendes PRog in ANlehnung an Willms geschrieben.<br />
Soll eine bis zu zwanzigstellige Integerzahl einlesen und Quersumme ausgeben, sowie Summierung bei Eingabe eines falschen Zeichens (nicht-Ziffer) abbrechen.<br />
Habe dies auf zwei Arten zu realisieren versucht und beide Varianten hintereinandergeschalten:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;ctype.h&gt;                            // isdigit
using namespace std;

// Eigene Version.

int main()
    {
    char c;
    int qsum = 0, cnt;

    for (cnt = 0; (cnt &lt; 20) &amp;&amp; ((c=cin.get()) != '\n'); cnt++)
        {
        if(c &gt; '9' || c &lt; '0')
             {
             cout &lt;&lt; &quot;Mind. eine der Eingaben keine Ziffer. Quersumme bis zur Fehleingabe.\n\n&quot;;
             break;
             }

        qsum += c - '0';
        }
    cout &lt;&lt; &quot;Quersumme: &quot; &lt;&lt; qsum &lt;&lt; &quot;\n\n&quot;;

    for (cnt = 0; (cnt &lt; 20) &amp;&amp; ((c=cin.get()) != '\n'); cnt++)
        {
        if(!isdigit(c))
             {
             cout &lt;&lt; &quot;Mind. eine der Eingaben keine Ziffer. Quersumme bis zur Fehleingabe.\n\n&quot;;
             break;
             }

        qsum += c - '0';
        }
    cout &lt;&lt; &quot;Quersumme: &quot; &lt;&lt; qsum &lt;&lt; &quot;\n\n&quot;;

    system(&quot;pause&quot;);
    return 0;
    }
</code></pre>
<p>So, nun passiert folgendes:<br />
a) Wird die erste Zahl fehlerfrei eingegeben, wird die Quersumme ausgegeben und ich darf die zweite Zahl eingeben, die bei Fehleingabe zum erhoffen Programmabbruch führt.</p>
<p>b) Geb ich jedoch bei der ersten Zahl bereits eine Fehleingabe ein, wird auch die zweite Schleife abgebrochen.<br />
Dachte erst, es liegt an der break-Anweisung, hab dann mit &quot;goto&quot; in der ersten Schleife auf das Ende dieser verwiesen - gleicher Fehler.</p>
<p>Ich hoffe, ich konnt einigermaßen darlegen, was mein Problem ist.<br />
Vielen Dank für Eure Hilfe!</p>
<p>lG<br />
Tonikum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472286</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Tue, 11 Mar 2008 17:37:21 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifen &amp;amp; Break? on Tue, 11 Mar 2008 17:49:49 GMT]]></title><description><![CDATA[<p>Je nachdem, wo eine &quot;nicht Zahl&quot; steht, geht er in der zweiten Schleife ja direkt da weiter.</p>
<p>Also &quot;1234a&quot; würde bei dem 'a' die erste abbrechen, und dann in der zweiten gleich das '\n' bekommen.</p>
<p>Im übrigen solltest du die Quersumme _neu_ berechnen, also vor der zweiten Schleife auf null setzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1472291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472291</guid><dc:creator><![CDATA[lagalopex]]></dc:creator><pubDate>Tue, 11 Mar 2008 17:49:49 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifen &amp;amp; Break? on Wed, 12 Mar 2008 07:53:48 GMT]]></title><description><![CDATA[<p>Etwas kürzer, geht aber in der Form nur wenn wirklich alle Zeichen Ziffern sind.</p>
<pre><code class="language-cpp">std::string str = &quot;1234567890&quot;;
    std::cout &lt;&lt; &quot;quer ist: &quot; &lt;&lt;
	std::accumulate(str.begin(), str.end(), -str.size() * '0') &lt;&lt; std::endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1472547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1472547</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 12 Mar 2008 07:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifen &amp;amp; Break? on Wed, 12 Mar 2008 17:14:09 GMT]]></title><description><![CDATA[<p>Dankeschön!<br />
Den kürzeren Quellcode kann ich mit meinem Wissensstand noch nich umsetzen bzw. nachvollziehen...</p>
<p>Ich verstehe nicht ganz, warum dann das '\n' automatisch in die zweite Schleife geht?<br />
Habe versucht, nach der ersten Schleife sowohl qsum (danke für den Hinweis) als auch c nochmal nullzusetzen. Hab aber den gleichen Fehler:<br />
Abbruch auch der zweiten Schleife bei fehleingabe in der ersten.</p>
<p>Was versteh ich da genau falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473152</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Wed, 12 Mar 2008 17:14:09 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifen &amp;amp; Break? on Wed, 12 Mar 2008 17:31:23 GMT]]></title><description><![CDATA[<p>Tonikum schrieb:</p>
<blockquote>
<p>Ich verstehe nicht ganz, warum dann das '\n' automatisch in die zweite Schleife geht?<br />
Habe versucht, nach der ersten Schleife sowohl qsum (danke für den Hinweis) als auch c nochmal nullzusetzen. Hab aber den gleichen Fehler:<br />
Abbruch auch der zweiten Schleife bei fehleingabe in der ersten.</p>
</blockquote>
<p>Nehmen wir an, du gibst &quot;1234a&quot; ein und drückst enter.<br />
Nun wird in der ersten Schleife ja Zeichen für Zeichen eingelesen.<br />
Es wird also 1+2+3+4 gerechnet. Dann kommt das 'a' und die Schleife wird abgebrochen.<br />
Nun gehen wir in die zweite Schleife und lesen weiter Zeichen für Zeichen. Im Eingabepuffer ist aber noch das enter, also '\n' was dann direkt zum Abbruch der zweiten Schleife führt.</p>
<p>Oder geb mal &quot;1234a5678&quot; ein <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/1473164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473164</guid><dc:creator><![CDATA[lagalopex]]></dc:creator><pubDate>Wed, 12 Mar 2008 17:31:23 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifen &amp;amp; Break? on Wed, 12 Mar 2008 18:18:33 GMT]]></title><description><![CDATA[<p>Tonikum schrieb:</p>
<blockquote>
<p>... Hab aber den gleichen Fehler:<br />
...</p>
</blockquote>
<p>Am besten vor jeder neuen Eingabe den Puffer leeren. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#define bread break
#include &lt;iostream&gt;
using namespace std; 

#define FLASCH pulverizer();

void pulverizer()
{
	setvbuf(stdin,NULL,_IONBF,0);
    setvbuf(stdin,NULL,_IOFBF,BUFSIZ);
}

int main()
{
	int c = 0, i = 0, qsum=0;

	cout &lt;&lt; &quot;Enter numbers please.&quot; &lt;&lt; endl;

	while( (c = getc(stdin)) != '\n' &amp;&amp; i++ &lt; 4 )
	{	
		if(c &gt; '9' || c &lt; '0' )
		{
			puts(&quot;pfui&quot;); bread;
		}
		qsum += c-'0';
	}
	cout &lt;&lt; qsum &lt;&lt; endl;

	FLASCH // Puffer leeren !!!
	cout &lt;&lt; &quot;New Qsum ??? [y/n] &quot; &lt;&lt; endl;

	if ( c = getc(stdin) != 'y' ) goto good_bye;

	FLASCH // Puffer leeren !!!
	qsum = 0;

	cout &lt;&lt; &quot;Enter numbers please.&quot; &lt;&lt; endl;

	while( (c = getc(stdin)) != '\n' &amp;&amp; i++ &lt; 4 )
	{	
		if(c &gt; '9' || c &lt; '0' )
		{
			puts(&quot;pfui&quot;); bread;
		}
		qsum += c-'0';
	}
	cout &lt;&lt; qsum &lt;&lt; endl;
good_bye:
	cout &lt;&lt; &quot;Good Bye!&quot; &lt;&lt; endl;

	return 0;
}
 :)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1473189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473189</guid><dc:creator><![CDATA[buffer pulverizer]]></dc:creator><pubDate>Wed, 12 Mar 2008 18:18:33 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifen &amp;amp; Break? on Fri, 14 Mar 2008 11:15:57 GMT]]></title><description><![CDATA[<p>Danke für die Hinweise!<br />
Wi eleere ich genau den Puffer?<br />
Habe es mit der endl; Anweisung nach der ersten Ausgabe nach der ersten Schleife probiert, komm jedoch zum gleichen Ergebnis wie vorher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474201</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Fri, 14 Mar 2008 11:15:57 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifen &amp;amp; Break? on Fri, 14 Mar 2008 11:31:41 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">cin.ignore();
</code></pre>
<p>endl beinhaltet zwar auch einen flush, allerdings für die Ausgabe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474208</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 14 Mar 2008 11:31:41 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifen &amp;amp; Break? on Fri, 14 Mar 2008 15:40:16 GMT]]></title><description><![CDATA[<p>Super, jetzt funktionierts, vielen Dank! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Echt tolles Forum hier, geht ja blitzschnell!</p>
<p>(Sobald Gates vor mir zittert, werde ich mich revanchieren <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/1474393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474393</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Fri, 14 Mar 2008 15:40:16 GMT</pubDate></item></channel></rss>