<?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[Problem bei verschachtelten while&#x2F;if Anweisungen]]></title><description><![CDATA[<p>Hallo an alle ,<br />
Ich habe mich heute drangesetzt einen etwas besseren Taschenrechner zu schreiben als ich es bisher getan hatte.</p>
<p>Nun habe ich jedoch ein Problem bei dem ich die Welt nichtmehr verstehe.</p>
<p>Hier ist grade mal ein Codeausschnitt zuerst vom Berreich wo der Fehler auftritt.</p>
<pre><code>string wie_gehts_weiter = &quot;&quot; ;
	    cin  &gt;&gt; wie_gehts_weiter;
int iCondition = 0;
	while (iCondition == 0)

	{

		if(wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
	{
		cout &lt;&lt; &quot;Warum wird dieses If aufgerufen obwohl man alt eingibt \n&quot;;
	}

	else if(wie_gehts_weiter == &quot;alt&quot;||&quot;Alt&quot;||&quot;ALT&quot;) // RECHNE MIT ALTEN ZAHLEN WEITER
	{

	if (which_numbers == &quot;ganz&quot; || &quot;Ganz&quot;||&quot;GANZ&quot;)
	{

	cout &lt;&lt; ergebniss_ganzzahlen ;
	}  

	else if (which_numbers == &quot;komma&quot; || &quot;Komma&quot;||&quot;KOMMA&quot; )
	{
	cout &lt;&lt; ergebniss_komma ;
	}

	else
	{
	cerr &lt;&lt; &quot; Fehler Falsche eingabe bitte komma oder ganz eingeben .\n&quot;;
	}

	} // Ende  elseif wiegehtsweiter == alt

	else
	{
	cout &lt;&lt; &quot;Falsche Eingabe nitte alt oder neu eingeben\n&quot;;

	}

	}//Ende der while(iCondition == 0) Schleife
</code></pre>
<p>Das Problem ist , dass auch wenn ich in den string wie_gehts_weiter &quot;alt&quot; per cin einlese wird dennoch folgende Anweisung ausgeführt</p>
<pre><code>if(wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
	{
		cout &lt;&lt; &quot;Warum wird dieses If aufgerufen obwohl man alt eingibt \n&quot;;
	}
</code></pre>
<p>Habt ihr eine Idee wo das das Problem sein könnte?<br />
Er müsste doch theoretisch sobald ich &quot;alt&quot; ,&quot;ALT&quot;, oder &quot;Alt&quot; einlese die else if Anweisungen ausführen wieso ruft er immer das erste if auf?</p>
<p>Falls es jemand zum verständnis braucht ist hier der bisherige Code ( Er ist noch unvollständig , daher werden manche Dinge vlt noch nicht klar sein wieso ich etwas mache dann einfach nachfragen bitte).</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

 long rechen_function_ganzzahlen( long first_number, long second_number ,char rechenzeichen)
{   
	long result   ; 
	switch(rechenzeichen)  
	{
	case '+' :       result = first_number+second_number ; break;
	case '-' :       result = first_number-second_number ; break;
	case '*' :       result =  first_number*second_number ; break;
	case '/' :       result = first_number/second_number;  break;
	default: cout &lt;&lt; &quot;unbekanntes Rechenzeichen...\n&quot;; return 1;
	}

	return result;
}

 float rechen_function_kommazahlen( float first_number, float second_number ,char rechenzeichen )
{   float result ;
	switch(rechenzeichen)  
	{
	case '+' :       result =  first_number+second_number; break;
	case '-' :       result =  first_number-second_number; break;
	case '*' :       result =  first_number*second_number; break;
	case '/' :       result =  first_number/second_number; break;
	default: cout &lt;&lt; &quot;unbekanntes Rechenzeichen...\n&quot;; return 1;
	}
	return result ;

}

int main()
{   

	long  ergebniss_ganzzahlen = 0;
	float ergebniss_komma = 0;
	cout  &lt;&lt;&quot;\t\t\t############################\n&quot;
		&lt;&lt;  &quot;\t\t\t#     Taschenrechner       #\n&quot;
		&lt;&lt;  &quot;\t\t\t#     von    Mir :)       #\n&quot;
		&lt;&lt;  &quot;\t\t\t#     -------------        #\n&quot;                  
		&lt;&lt;  &quot;\t\t\t############################\n&quot;;

	int global_condition = 0 ;
	while (global_condition == 0) 
	{ //ANFANG WHILE (global_condition)

	cout &lt;&lt; &quot;Wollen sie mit vollen Zahlen , oder Gleitkommazahlen rechnen? \n &quot;
	     &lt;&lt; &quot;Geben sie nun entweder ganz ,oder komma ein\n&quot;;
	string which_numbers = &quot;&quot;;
	cin &gt;&gt; which_numbers ;
	if (which_numbers == &quot;ganz&quot; || &quot;Ganz&quot;||&quot;GANZ&quot;)
	{
	// Wenn mit Ganzzahlen gerechnet werden soll kommt dieser Part 
    cout &lt;&lt; &quot; Geben sie bitte ihre Rechnung ein und bestätigen sie mit die Eingabe jeweils \n mit Enter\n&quot;
	     &lt;&lt; &quot; Die Rechnung muss 2 Zahlen , und ein Rechenzeichen beinhalten \n&quot;;

	long  number_one = 0, number_two = 0 ;
	char rechenzeichen_auswahl = '\0';

	cout &lt;&lt; &quot;Erste Zahl\n&quot;;
	cin &gt;&gt; number_one ;
	cout &lt;&lt; &quot;Rechenzeichen(+  -  *   /  ) \n&quot;;
	cin &gt;&gt; rechenzeichen_auswahl;
	cout &lt;&lt;&quot;Zweite Zahl\n&quot;;
	cin &gt;&gt; number_two ;

	ergebniss_ganzzahlen =  rechen_function_ganzzahlen(number_one ,number_two ,rechenzeichen_auswahl);

	cout &lt;&lt; &quot;Das Ergebnis ihrer Rechnung beträgt : &quot; &lt;&lt; ergebniss_ganzzahlen &lt;&lt; endl ; 
  // Bis hier mit ganzzahlen 
	}
	// Ab hier mit Komma Zahlen 
	else if(which_numbers == &quot;komma&quot; || &quot;Komma&quot;||&quot;KOMMA&quot; )
	{

    cout &lt;&lt; &quot; Geben sie bitte ihre Rechnung ein und bestätigen sie mit die Eingabe jeweils \n mit Enter\n&quot;
	     &lt;&lt; &quot; Die Rechnung muss 2 Zahlen , und ein Rechenzeichen beinhalten \n&quot;;

	float  number_1 = 0, number_2 = 0;
	char rechenzeichen_auswahl = '\0';

	cout &lt;&lt; &quot;Erste Zahl\n&quot;;
	cin &gt;&gt; number_1 ;
	cout &lt;&lt; &quot;Rechenzeichen(+  -  *   /  ) \n&quot;;
	cin &gt;&gt; rechenzeichen_auswahl;
	cout &lt;&lt;&quot;Zweite Zahl\n&quot;;
	cin &gt;&gt; number_2 ;

	ergebniss_komma =  rechen_function_kommazahlen(number_1 ,number_2 ,rechenzeichen_auswahl);
	cout &lt;&lt; &quot;Das Ergebnis ihrer Rechnung beträgt : &quot; &lt;&lt; ergebniss_komma &lt;&lt; endl ; 
	// Bis hierhin mit Kommazahlen
	}
	cout &lt;&lt;&quot;Moechten sie noch eine Zahl zu ihrem Ergebnis dazu Rechnen , oder wollen sie wieder mit neuen Zahlen Rechnen\n&quot;
	     &lt;&lt;&quot;Wenn sie mit neuen Zahlen rechnen wollen geben sie \' neu in die Konsole ein \n&quot;
		 &lt;&lt;&quot;Möchten sie mit dem alten Ergebnis weiterrechnen geben sie \'alt ein \n&quot;;
	string wie_gehts_weiter = &quot;&quot; ;
	    cin  &gt;&gt; wie_gehts_weiter;
	int iCondition = 0;
	while (iCondition == 0)

	{

		if(wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
	{
		cout &lt;&lt; &quot;Warum wird dieses If aufgerufen obwohl man alt eingibt \n&quot;;
	}

	else if(wie_gehts_weiter == &quot;alt&quot;||&quot;Alt&quot;||&quot;ALT&quot;) // RECHNE MIT ALTEN ZAHLEN WEITER
	{

	if (which_numbers == &quot;ganz&quot; || &quot;Ganz&quot;||&quot;GANZ&quot;)
	{

	cout &lt;&lt; ergebniss_ganzzahlen ;
	}  

	else if (which_numbers == &quot;komma&quot; || &quot;Komma&quot;||&quot;KOMMA&quot; )
	{
	cout &lt;&lt; ergebniss_komma ;
	}

	else
	{
	cerr &lt;&lt; &quot; Fehler Falsche eingabe bitte komma oder ganz eingeben .\n&quot;;
	}

	} // Ende  elseif wiegehtsweiter == alt

	else
	{
	cout &lt;&lt; &quot;Falsche Eingabe nitte alt oder neu eingeben\n&quot;;

	}

	}//Ende der while(iCondition == 0) Schleife

	}//ENDE WHILE (global_condition)
return 0 ;
}
</code></pre>
<p>Würde mich über hilfreiche Antworten sehr freuen <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/topic/315693/problem-bei-verschachtelten-while-if-anweisungen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 31 Jul 2026 03:31:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/315693.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Apr 2013 14:23:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 14:27:37 GMT]]></title><description><![CDATA[<p>Hallo an alle ,<br />
Ich habe mich heute drangesetzt einen etwas besseren Taschenrechner zu schreiben als ich es bisher getan hatte.</p>
<p>Nun habe ich jedoch ein Problem bei dem ich die Welt nichtmehr verstehe.</p>
<p>Hier ist grade mal ein Codeausschnitt zuerst vom Berreich wo der Fehler auftritt.</p>
<pre><code>string wie_gehts_weiter = &quot;&quot; ;
	    cin  &gt;&gt; wie_gehts_weiter;
int iCondition = 0;
	while (iCondition == 0)

	{

		if(wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
	{
		cout &lt;&lt; &quot;Warum wird dieses If aufgerufen obwohl man alt eingibt \n&quot;;
	}

	else if(wie_gehts_weiter == &quot;alt&quot;||&quot;Alt&quot;||&quot;ALT&quot;) // RECHNE MIT ALTEN ZAHLEN WEITER
	{

	if (which_numbers == &quot;ganz&quot; || &quot;Ganz&quot;||&quot;GANZ&quot;)
	{

	cout &lt;&lt; ergebniss_ganzzahlen ;
	}  

	else if (which_numbers == &quot;komma&quot; || &quot;Komma&quot;||&quot;KOMMA&quot; )
	{
	cout &lt;&lt; ergebniss_komma ;
	}

	else
	{
	cerr &lt;&lt; &quot; Fehler Falsche eingabe bitte komma oder ganz eingeben .\n&quot;;
	}

	} // Ende  elseif wiegehtsweiter == alt

	else
	{
	cout &lt;&lt; &quot;Falsche Eingabe nitte alt oder neu eingeben\n&quot;;

	}

	}//Ende der while(iCondition == 0) Schleife
</code></pre>
<p>Das Problem ist , dass auch wenn ich in den string wie_gehts_weiter &quot;alt&quot; per cin einlese wird dennoch folgende Anweisung ausgeführt</p>
<pre><code>if(wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
	{
		cout &lt;&lt; &quot;Warum wird dieses If aufgerufen obwohl man alt eingibt \n&quot;;
	}
</code></pre>
<p>Habt ihr eine Idee wo das das Problem sein könnte?<br />
Er müsste doch theoretisch sobald ich &quot;alt&quot; ,&quot;ALT&quot;, oder &quot;Alt&quot; einlese die else if Anweisungen ausführen wieso ruft er immer das erste if auf?</p>
<p>Falls es jemand zum verständnis braucht ist hier der bisherige Code ( Er ist noch unvollständig , daher werden manche Dinge vlt noch nicht klar sein wieso ich etwas mache dann einfach nachfragen bitte).</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

 long rechen_function_ganzzahlen( long first_number, long second_number ,char rechenzeichen)
{   
	long result   ; 
	switch(rechenzeichen)  
	{
	case '+' :       result = first_number+second_number ; break;
	case '-' :       result = first_number-second_number ; break;
	case '*' :       result =  first_number*second_number ; break;
	case '/' :       result = first_number/second_number;  break;
	default: cout &lt;&lt; &quot;unbekanntes Rechenzeichen...\n&quot;; return 1;
	}

	return result;
}

 float rechen_function_kommazahlen( float first_number, float second_number ,char rechenzeichen )
{   float result ;
	switch(rechenzeichen)  
	{
	case '+' :       result =  first_number+second_number; break;
	case '-' :       result =  first_number-second_number; break;
	case '*' :       result =  first_number*second_number; break;
	case '/' :       result =  first_number/second_number; break;
	default: cout &lt;&lt; &quot;unbekanntes Rechenzeichen...\n&quot;; return 1;
	}
	return result ;

}

int main()
{   

	long  ergebniss_ganzzahlen = 0;
	float ergebniss_komma = 0;
	cout  &lt;&lt;&quot;\t\t\t############################\n&quot;
		&lt;&lt;  &quot;\t\t\t#     Taschenrechner       #\n&quot;
		&lt;&lt;  &quot;\t\t\t#     von    Mir :)       #\n&quot;
		&lt;&lt;  &quot;\t\t\t#     -------------        #\n&quot;                  
		&lt;&lt;  &quot;\t\t\t############################\n&quot;;

	int global_condition = 0 ;
	while (global_condition == 0) 
	{ //ANFANG WHILE (global_condition)

	cout &lt;&lt; &quot;Wollen sie mit vollen Zahlen , oder Gleitkommazahlen rechnen? \n &quot;
	     &lt;&lt; &quot;Geben sie nun entweder ganz ,oder komma ein\n&quot;;
	string which_numbers = &quot;&quot;;
	cin &gt;&gt; which_numbers ;
	if (which_numbers == &quot;ganz&quot; || &quot;Ganz&quot;||&quot;GANZ&quot;)
	{
	// Wenn mit Ganzzahlen gerechnet werden soll kommt dieser Part 
    cout &lt;&lt; &quot; Geben sie bitte ihre Rechnung ein und bestätigen sie mit die Eingabe jeweils \n mit Enter\n&quot;
	     &lt;&lt; &quot; Die Rechnung muss 2 Zahlen , und ein Rechenzeichen beinhalten \n&quot;;

	long  number_one = 0, number_two = 0 ;
	char rechenzeichen_auswahl = '\0';

	cout &lt;&lt; &quot;Erste Zahl\n&quot;;
	cin &gt;&gt; number_one ;
	cout &lt;&lt; &quot;Rechenzeichen(+  -  *   /  ) \n&quot;;
	cin &gt;&gt; rechenzeichen_auswahl;
	cout &lt;&lt;&quot;Zweite Zahl\n&quot;;
	cin &gt;&gt; number_two ;

	ergebniss_ganzzahlen =  rechen_function_ganzzahlen(number_one ,number_two ,rechenzeichen_auswahl);

	cout &lt;&lt; &quot;Das Ergebnis ihrer Rechnung beträgt : &quot; &lt;&lt; ergebniss_ganzzahlen &lt;&lt; endl ; 
  // Bis hier mit ganzzahlen 
	}
	// Ab hier mit Komma Zahlen 
	else if(which_numbers == &quot;komma&quot; || &quot;Komma&quot;||&quot;KOMMA&quot; )
	{

    cout &lt;&lt; &quot; Geben sie bitte ihre Rechnung ein und bestätigen sie mit die Eingabe jeweils \n mit Enter\n&quot;
	     &lt;&lt; &quot; Die Rechnung muss 2 Zahlen , und ein Rechenzeichen beinhalten \n&quot;;

	float  number_1 = 0, number_2 = 0;
	char rechenzeichen_auswahl = '\0';

	cout &lt;&lt; &quot;Erste Zahl\n&quot;;
	cin &gt;&gt; number_1 ;
	cout &lt;&lt; &quot;Rechenzeichen(+  -  *   /  ) \n&quot;;
	cin &gt;&gt; rechenzeichen_auswahl;
	cout &lt;&lt;&quot;Zweite Zahl\n&quot;;
	cin &gt;&gt; number_2 ;

	ergebniss_komma =  rechen_function_kommazahlen(number_1 ,number_2 ,rechenzeichen_auswahl);
	cout &lt;&lt; &quot;Das Ergebnis ihrer Rechnung beträgt : &quot; &lt;&lt; ergebniss_komma &lt;&lt; endl ; 
	// Bis hierhin mit Kommazahlen
	}
	cout &lt;&lt;&quot;Moechten sie noch eine Zahl zu ihrem Ergebnis dazu Rechnen , oder wollen sie wieder mit neuen Zahlen Rechnen\n&quot;
	     &lt;&lt;&quot;Wenn sie mit neuen Zahlen rechnen wollen geben sie \' neu in die Konsole ein \n&quot;
		 &lt;&lt;&quot;Möchten sie mit dem alten Ergebnis weiterrechnen geben sie \'alt ein \n&quot;;
	string wie_gehts_weiter = &quot;&quot; ;
	    cin  &gt;&gt; wie_gehts_weiter;
	int iCondition = 0;
	while (iCondition == 0)

	{

		if(wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
	{
		cout &lt;&lt; &quot;Warum wird dieses If aufgerufen obwohl man alt eingibt \n&quot;;
	}

	else if(wie_gehts_weiter == &quot;alt&quot;||&quot;Alt&quot;||&quot;ALT&quot;) // RECHNE MIT ALTEN ZAHLEN WEITER
	{

	if (which_numbers == &quot;ganz&quot; || &quot;Ganz&quot;||&quot;GANZ&quot;)
	{

	cout &lt;&lt; ergebniss_ganzzahlen ;
	}  

	else if (which_numbers == &quot;komma&quot; || &quot;Komma&quot;||&quot;KOMMA&quot; )
	{
	cout &lt;&lt; ergebniss_komma ;
	}

	else
	{
	cerr &lt;&lt; &quot; Fehler Falsche eingabe bitte komma oder ganz eingeben .\n&quot;;
	}

	} // Ende  elseif wiegehtsweiter == alt

	else
	{
	cout &lt;&lt; &quot;Falsche Eingabe nitte alt oder neu eingeben\n&quot;;

	}

	}//Ende der while(iCondition == 0) Schleife

	}//ENDE WHILE (global_condition)
return 0 ;
}
</code></pre>
<p>Würde mich über hilfreiche Antworten sehr freuen <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/2314129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314129</guid><dc:creator><![CDATA[DerNoob1993]]></dc:creator><pubDate>Tue, 09 Apr 2013 14:27:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 14:30:23 GMT]]></title><description><![CDATA[<p>DerNoob1993 schrieb:</p>
<blockquote>
<pre><code>if(wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
</code></pre>
</blockquote>
<p>-&gt;</p>
<pre><code>if (wie_gehts_weiter == &quot;Neu&quot; || wie_gehts_weiter == &quot;neu&quot; || ... == &quot;NEU&quot;)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2314134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314134</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Tue, 09 Apr 2013 14:30:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 14:35:44 GMT]]></title><description><![CDATA[<p>Was ist denn, wenn der Nutzer &quot;NEu&quot; oder &quot;neU&quot; eintippt?</p>
<pre><code>if (wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
</code></pre>
<p>Du meinst</p>
<pre><code>if (wie_gehts_weiter == &quot;Neu&quot; || wie_gehts_weiter == &quot;neu&quot;|| wie_gehts_weiter == &quot;NEU&quot;)
</code></pre>
<p>Ebenso an all den anderen Stellen, die so ähnlich aussehen. Damit du dich nicht tot tippst, bietet es sich an, dass du eine Funktion zum Stringvergleich schreibst, die dann auch automatisch alle Groß- und Kleinschreibvarianten testet.</p>
<p>(Oder du nimmst die fertige Funktion dafür aus der Boost Bibliothek)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314135</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 09 Apr 2013 14:35:44 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 14:39:55 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>DerNoob1993 schrieb:</p>
<blockquote>
<pre><code>if(wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
</code></pre>
</blockquote>
<p>-&gt;</p>
<pre><code>if (wie_gehts_weiter == &quot;Neu&quot; || wie_gehts_weiter == &quot;neu&quot; || ... == &quot;NEU&quot;)
</code></pre>
</blockquote>
<p>Ach ich danke dir vielmals <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="🙂"
    /> daß hab ich bei ganz vielen anderen ifs auch falsch gemacht <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="😃"
    /> .<br />
War echt verzweifelt , und habe einfach nicht verstanden wieso er immer nur das erste if aufruft ^^.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3822">@SEPP</a> ja das ist ne sehr gute Idee mir ne Funktionen zum vergleichen von strings zu schreiben.Werde ich mich gleich dranbegeben :).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314136</guid><dc:creator><![CDATA[DerNoob1993]]></dc:creator><pubDate>Tue, 09 Apr 2013 14:39:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 14:51:00 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Was ist denn, wenn der Nutzer &quot;NEu&quot; oder &quot;neU&quot; eintippt?</p>
<pre><code>if (wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
</code></pre>
<p>Du meinst</p>
<pre><code>if (wie_gehts_weiter == &quot;Neu&quot; || wie_gehts_weiter == &quot;neu&quot;|| wie_gehts_weiter == &quot;NEU&quot;)
</code></pre>
<p>Ebenso an all den anderen Stellen, die so ähnlich aussehen. Damit du dich nicht tot tippst, bietet es sich an, dass du eine Funktion zum Stringvergleich schreibst, die dann auch automatisch alle Groß- und Kleinschreibvarianten testet.</p>
<p>(Oder du nimmst die fertige Funktion dafür aus der Boost Bibliothek)</p>
</blockquote>
<p>Bevor du ihn lange im Dunkeln tappen lässt:<br />
<a href="http://en.cppreference.com/w/cpp/algorithm/transform" rel="nofollow">http://en.cppreference.com/w/cpp/algorithm/transform</a><br />
<a href="http://de.cppreference.com/w/cpp/algorithm/transform" rel="nofollow">http://de.cppreference.com/w/cpp/algorithm/transform</a></p>
<pre><code>transform(to_modify.begin(), to_modify.end(), to_modify.begin(), tolower );
</code></pre>
<p>Header + namespace suchst du dir selber raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314139</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Tue, 09 Apr 2013 14:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 15:06:14 GMT]]></title><description><![CDATA[<p>EOP schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Was ist denn, wenn der Nutzer &quot;NEu&quot; oder &quot;neU&quot; eintippt?</p>
<pre><code>if (wie_gehts_weiter == &quot;Neu&quot;||&quot;neu&quot;||&quot;NEU&quot;)
</code></pre>
<p>Du meinst</p>
<pre><code>if (wie_gehts_weiter == &quot;Neu&quot; || wie_gehts_weiter == &quot;neu&quot;|| wie_gehts_weiter == &quot;NEU&quot;)
</code></pre>
<p>Ebenso an all den anderen Stellen, die so ähnlich aussehen. Damit du dich nicht tot tippst, bietet es sich an, dass du eine Funktion zum Stringvergleich schreibst, die dann auch automatisch alle Groß- und Kleinschreibvarianten testet.</p>
<p>(Oder du nimmst die fertige Funktion dafür aus der Boost Bibliothek)</p>
</blockquote>
<p>Bevor du ihn lange im Dunkeln tappen lässt:<br />
<a href="http://en.cppreference.com/w/cpp/algorithm/transform" rel="nofollow">http://en.cppreference.com/w/cpp/algorithm/transform</a><br />
<a href="http://de.cppreference.com/w/cpp/algorithm/transform" rel="nofollow">http://de.cppreference.com/w/cpp/algorithm/transform</a></p>
<pre><code>transform(to_modify.begin(), to_modify.end(), to_modify.begin(), tolower );
</code></pre>
<p>Header + namespace suchst du dir selber raus.</p>
</blockquote>
<p>Danke , aber ich werde nachdem ich das gröbste vom Taschenrechner fertig habe mich mal selbst dransetzen ,und versuchen eine Funktion zu schreiben welche alle Groß/Kleinschreibvarianten durchgeht,da ich nur dabei etwas lerne.<br />
Ich schreibe einfach eine Funktion welche jedes Zeichen in einem String durchgeht , und jedes Zeichen mit der tolower() Funktion in einen Kleinbuchstaben umwandelt , dann brauch ich beim if nurnoch eine Bedingung in kleinschrift schreiben .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314142</guid><dc:creator><![CDATA[DerNoob1993]]></dc:creator><pubDate>Tue, 09 Apr 2013 15:06:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 15:28:54 GMT]]></title><description><![CDATA[<p>Edit: s. u.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314145</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 09 Apr 2013 15:28:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 15:24:32 GMT]]></title><description><![CDATA[<p>Sone, Du nervst!</p>
<p>-&gt; N3337 §25.3.4/5</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314148</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Tue, 09 Apr 2013 15:24:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 15:28:40 GMT]]></title><description><![CDATA[<p>Caligulaminus schrieb:</p>
<blockquote>
<p>Sone, Du nervst!</p>
</blockquote>
<p>Entspann dich, hab mich versehen. <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/2314151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314151</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 09 Apr 2013 15:28:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 17:48:14 GMT]]></title><description><![CDATA[<p>Was mich noch interessieren würde grade.<br />
Kann man einer switch() anweisung auch irgendwie einen string oder ein char array übergeben?<br />
Habe beides probiert mein Compiler sagt allerdings &quot; Der Ausdruck muss einen Integralen Typ oder einen Enumerationstyp aufweisen&quot;. Gibt es da garkeine möglichkeit? Denn die case Fälle sind wesentlich übersichtlicher , und ich muss noch wesentlich mehr verschachtelte if fälle mit strings einfügen da wäre das mit cases deutlich übersichtlicher finde ich .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314210</guid><dc:creator><![CDATA[DerNoob1993]]></dc:creator><pubDate>Tue, 09 Apr 2013 17:48:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 17:53:06 GMT]]></title><description><![CDATA[<p>DerNoob1993 schrieb:</p>
<blockquote>
<p>Was mich noch interessieren würde grade.<br />
Kann man einer switch() anweisung auch irgendwie einen string oder ein char array übergeben?<br />
Habe beides probiert mein Compiler sagt allerdings &quot; Der Ausdruck muss einen Integralen Typ oder einen Enumerationstyp aufweisen&quot;. Gibt es da garkeine möglichkeit? Denn die case Fälle sind wesentlich übersichtlicher , und ich muss noch wesentlich mehr verschachtelte if fälle mit strings einfügen da wäre das mit cases deutlich übersichtlicher finde ich .</p>
</blockquote>
<p>Nein, das geht nicht direkt. Das solltest du auch gar nicht brauchen. switch ist zwar bei Anfängern recht beliebt, kommt meiner Erfahrung nach praktisch aber so gut wie nie vor. Technisch geht es bei der switch-Anweisung eher um schnelle Sprünge im Maschinencode. Wenn es jedoch darum geht, massive if-Kaskaden zu vermeiden, so sind andere Techniken meistens viel besser geeignet. Was genau hast du vor? Vielleicht wäre eine map&lt;string, irgendwas&gt; das richtige. Nein, das ist wahrscheinlich noch weit über dem, was du derzeit kennst. Ein guter Anfang sind, wie schon gesagt, Funktionen. Vielleicht kannst du das, was du vor hast, in schöne Funktionen, mit jeweils klar umrissenen Aufgaben, fassen. Erfahrungsgemäß vereinfachen sich dadurch viele Probleme so weit, dass sie sich praktisch von alleine lösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314220</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 09 Apr 2013 17:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 17:55:58 GMT]]></title><description><![CDATA[<p>Nein, nur einen int (wobei enum gewissermaßen auch ein int ist).</p>
<p>EDIT: Da war ich wohl anderthalb Minuten zu langsam. <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/2314222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314222</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Tue, 09 Apr 2013 17:55:58 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 17:56:08 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>DerNoob1993 schrieb:</p>
<blockquote>
<p>Was mich noch interessieren würde grade.<br />
Kann man einer switch() anweisung auch irgendwie einen string oder ein char array übergeben?<br />
Habe beides probiert mein Compiler sagt allerdings &quot; Der Ausdruck muss einen Integralen Typ oder einen Enumerationstyp aufweisen&quot;. Gibt es da garkeine möglichkeit? Denn die case Fälle sind wesentlich übersichtlicher , und ich muss noch wesentlich mehr verschachtelte if fälle mit strings einfügen da wäre das mit cases deutlich übersichtlicher finde ich .</p>
</blockquote>
<p>Nein, das geht nicht direkt. Das solltest du auch gar nicht brauchen. switch ist zwar bei Anfängern recht beliebt, kommt meiner Erfahrung nach praktisch aber so gut wie nie vor. Technisch geht es bei der switch-Anweisung eher um schnelle Sprünge im Maschinencode. Wenn es jedoch darum geht, massive if-Kaskaden zu vermeiden, so sind andere Techniken meistens viel besser geeignet. Was genau hast du vor? Vielleicht wäre eine map&lt;string, irgendwas&gt; das richtige. Nein, das ist wahrscheinlich noch weit über dem, was du derzeit kennst. Ein guter Anfang sind, wie schon gesagt, Funktionen. Vielleicht kannst du das, was du vor hast, in schöne Funktionen, mit jeweils klar umrissenen Aufgaben, fassen. Erfahrungsgemäß vereinfachen sich dadurch viele Probleme so weit, dass sie sich praktisch von alleine lösen.</p>
</blockquote>
<p>Ok ich danke dir für die Antwort.<br />
Dann werd ichs einfach in Funktionen packen um es übersichtlich zu halten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314223</guid><dc:creator><![CDATA[DerNoob1993]]></dc:creator><pubDate>Tue, 09 Apr 2013 17:56:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 18:02:54 GMT]]></title><description><![CDATA[<p>EOP schrieb:</p>
<blockquote>
<p>Nein, nur <s>einen int (wobei enum gewissermaßen auch ein int ist)</s> integrale Typen, Aufzählungstypen, oder Klassen mit einem eindeutigen Umwandlungsoperator hin zu einem integralen oder Aufzählungstyp.</p>
</blockquote>
<p>FTFY <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="🙂"
    /> .<br />
<a href="http://www.c-plusplus.net/forum/194356" rel="nofollow">http://www.c-plusplus.net/forum/194356</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314226</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 09 Apr 2013 18:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 18:19:46 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>EOP schrieb:</p>
<blockquote>
<p>Nein, nur <s>einen int (wobei enum gewissermaßen auch ein int ist)</s> integrale Typen, Aufzählungstypen, oder Klassen mit einem eindeutigen Umwandlungsoperator hin zu einem integralen oder Aufzählungstyp.</p>
</blockquote>
<p>FTFY <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="🙂"
    /> .<br />
<a href="http://www.c-plusplus.net/forum/194356" rel="nofollow">http://www.c-plusplus.net/forum/194356</a></p>
</blockquote>
<p>TY. <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="😉"
    /><br />
Fehlen noch Funktionen, die einen integralen- oder Aufzählungstypen zurückgeben.</p>
<p>Hatte aber eigentlich nicht vor einen offensichtlichen Anfänger mit zu detaillierten Infos eher zu verwirren als ihm eine einfache Antwort zu geben.</p>
<p>Das passiert hier schon viel zu oft, daß auf einfache Fragen manche Leute meinen mit &quot;Kuck mal was ich Tolles kenne, was du garantiert nicht verstehst&quot; antworten zu müssen.</p>
<p>Wobei ich sicher nicht dich damit meine.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314236</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Tue, 09 Apr 2013 18:19:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 18:34:48 GMT]]></title><description><![CDATA[<p>Sind Aufzählungstypen gleichbedeutend mit Charakteren, also &quot;char&quot; ?</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314244</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Tue, 09 Apr 2013 18:34:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 18:36:14 GMT]]></title><description><![CDATA[<p>HarteWare schrieb:</p>
<blockquote>
<p>Sind Aufzählungstypen gleichbedeutend mit Charakteren, also &quot;char&quot; ?</p>
</blockquote>
<p>Nein. Aufzählungstypen sind <code>enum</code> s.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314245</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 09 Apr 2013 18:36:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 18:57:35 GMT]]></title><description><![CDATA[<p>Ach ja, bool und char geht auch noch.<br />
Im Prinzip wohl alles, was in einem einzigen Register übergeben werden kann.</p>
<p>EDIT: ...und kein pointer ist (wobei ich das noch nicht versucht habe).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314251</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Tue, 09 Apr 2013 18:57:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 18:57:34 GMT]]></title><description><![CDATA[<p>EOP schrieb:</p>
<blockquote>
<p>Fehlen noch Funktionen, die einen integralen- oder Aufzählungstypen zurückgeben.</p>
</blockquote>
<p>Das sind aber keine Typen, sondern Ausdrücke.</p>
<blockquote>
<p>Das passiert hier schon viel zu oft, daß auf einfache Fragen manche Leute meinen mit &quot;Kuck mal was ich Tolles kenne, was du garantiert nicht verstehst&quot; antworten zu müssen.</p>
</blockquote>
<p>Das ist eher so als Klarstellung/Ausblick gemeint. Wenn du gleich mit meiner Antwort gekommen wärst, hätte ich wohl im Gegenteil eine Antwort wie deine darunter geschrieben, damit der TE es auch versteht.</p>
<p>EOP schrieb:</p>
<blockquote>
<p>Ach ja, bool und char geht auch noch.<br />
Im Prinzip wohl alles, was in einem einzigen Register übergeben werden kann.</p>
</blockquote>
<p>Nein, das ist nicht das Kriterium. Es geht um die Ganzzahligkeit. Fließkommazahlen gehen z.B. nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314252</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 09 Apr 2013 18:57:34 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 19:01:12 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>EOP schrieb:</p>
<blockquote>
<p>Das passiert hier schon viel zu oft, daß auf einfache Fragen manche Leute meinen mit &quot;Kuck mal was ich Tolles kenne, was du garantiert nicht verstehst&quot; antworten zu müssen.</p>
</blockquote>
<p>Das ist eher so als Klarstellung/Ausblick gemeint. Wenn du gleich mit meiner Antwort gekommen wärst, hätte ich wohl im Gegenteil eine Antwort wie deine darunter geschrieben, damit der TE es auch versteht.</p>
</blockquote>
<p>Hahaha, das ist mal cool. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2314256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314256</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Tue, 09 Apr 2013 19:01:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Tue, 09 Apr 2013 19:44:57 GMT]]></title><description><![CDATA[<blockquote>
<p>switch ist zwar bei Anfängern recht beliebt, kommt meiner Erfahrung nach praktisch aber so gut wie nie vor.</p>
</blockquote>
<p><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>
]]></description><link>https://www.c-plusplus.net/forum/post/2314267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314267</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 09 Apr 2013 19:44:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Wed, 10 Apr 2013 11:46:12 GMT]]></title><description><![CDATA[<p>Moin zusammen,<br />
ich habe gestern nurnoch ne halbe Std am Rechner weitergemacht .<br />
Deshalb mache ich jetzt grade noch etwas weiter ,und habe das gröbste nun fertig es fehlt eigentlich nurnoch die Funktion um einen string einzulesen in kleinbuchstaben umzuwandeln und zurück zugeben ,das ist aber ne Sache von 2 min , daher bin ich den Rechner grade erstmal am testen.<br />
Was mir grade aufgefallen ist an diesem Part Code :</p>
<pre><code>cout &lt;&lt; &quot;Erste Zahl\n&quot;;
	cin &gt;&gt; number_one ;
	cout &lt;&lt; &quot;Rechenzeichen(+  -  *   /  ) \n&quot;;
	cin &gt;&gt; rechenzeichen_auswahl;
	cout &lt;&lt;&quot;Zweite Zahl\n&quot;;
	cin &gt;&gt; number_two ;
</code></pre>
<p>Man kann alle cins auf einmal einlesen sprich 5+6 direkt nach dem allersten cout eingeben. Und dann werden alle anderen cout der Reihe nach ausgegeben,und die anderen cins übergangen ( das ergebniss ist sogar richtig) ,aber wieso kann ich in das erste cin die gesamte Rechnung einlesen verstehe das grade nicht. <a href="http://epvpimg.com/EZnbe" rel="nofollow">http://epvpimg.com/EZnbe</a> hier ist ein Bild wie ich das ganze <a href="http://meine.Er" rel="nofollow">meine.Er</a> liest ja zuerst nur den int wert ein wie kann ich in diesen denn die Rechnung einlesen?<br />
Hier ist mein Code falls ihr den noch zum Verständniss braucht.</p>
<pre><code>include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

 long rechen_function_ganzzahlen( long first_number, long second_number ,char rechenzeichen)
{   
	long result = 0  ; 
	switch(rechenzeichen)  
	{
	case '+' :       result = first_number+second_number ; break;
	case '-' :       result = first_number-second_number ; break;
	case '*' :       result =  first_number*second_number ; break;
	case '/' :       result = first_number/second_number;  break;
	default: cout &lt;&lt; &quot;unbekanntes Rechenzeichen.\n&quot;; break;
	}

	return result;
}

 float rechen_function_kommazahlen( float first_number, float second_number ,char rechenzeichen )
{   float result = 0  ;
	switch(rechenzeichen)  
	{
	case '+' :       result =  first_number+second_number; break;
	case '-' :       result =  first_number-second_number; break;
	case '*' :       result =  first_number*second_number; break;
	case '/' :       result =  first_number/second_number; break;
	default: cout &lt;&lt; &quot;unbekanntes Rechenzeichen.\n&quot;; break;
	}
	return result ;

}

int main()
{   

	long  ergebniss_ganzzahlen = 0;
	float ergebniss_komma = 0;
	cout  &lt;&lt;&quot;\t\t\t############################\n&quot;
		&lt;&lt;  &quot;\t\t\t#     Taschenrechner       #\n&quot;
		&lt;&lt;  &quot;\t\t\t#     von    Mir :)        #\n&quot;
		&lt;&lt;  &quot;\t\t\t#     -------------        #\n&quot;                  
		&lt;&lt;  &quot;\t\t\t############################\n&quot;;

	int global_condition = 0 ;
	while (global_condition == 0) 
	{ //ANFANG WHILE (global_condition)

	string which_numbers = &quot;&quot;;

	int first_while_condition = 0;
	while(first_while_condition == 0)

	{    //ANFANG while first_while_Condition 
            cout &lt;&lt; &quot;Wollen sie mit vollen Zahlen , oder Gleitkommazahlen rechnen? \n &quot;
	     &lt;&lt; &quot;Geben sie nun entweder ganz ,oder komma ein\n&quot;;
        cin &gt;&gt; which_numbers ;
	if (which_numbers == &quot;ganz&quot; || which_numbers == &quot;Ganz&quot;|| which_numbers == &quot;GANZ&quot;)
	{
	// Wenn mit Ganzzahlen gerechnet werden soll kommt dieser Part 
    cout &lt;&lt; &quot; Geben sie bitte ihre Rechnung ein und bestätigen sie mit die Eingabe jeweils \n mit Enter\n&quot;
	     &lt;&lt; &quot; Die Rechnung muss 2 Zahlen , und ein Rechenzeichen beinhalten \n&quot;;

	long  number_one = 0, number_two = 0 ;
	char rechenzeichen_auswahl = '\0';

	cout &lt;&lt; &quot;Erste Zahl\n&quot;;
	cin &gt;&gt; number_one ;
	cout &lt;&lt; &quot;Rechenzeichen(+  -  *   /  ) \n&quot;;
	cin &gt;&gt; rechenzeichen_auswahl;
	cout &lt;&lt;&quot;Zweite Zahl\n&quot;;
	cin &gt;&gt; number_two ;

	ergebniss_ganzzahlen =  rechen_function_ganzzahlen(number_one ,number_two ,rechenzeichen_auswahl);

	cout &lt;&lt; &quot;Das Ergebnis ihrer Rechnung beträgt : &quot; &lt;&lt; ergebniss_ganzzahlen &lt;&lt; endl ; 

	 ++first_while_condition; //Verlasse die while first_while_Condition Schleife
	// Bis hier mit ganzzahlen 
	}
	// Ab hier mit Komma Zahlen 
	else if(which_numbers == &quot;komma&quot; ||which_numbers == &quot;Komma&quot;||which_numbers ==&quot;KOMMA&quot; )
	{

    cout &lt;&lt; &quot; Geben sie bitte ihre Rechnung ein und bestätigen sie mit die Eingabe jeweils \n mit Enter\n&quot;
	     &lt;&lt; &quot; Die Rechnung muss 2 Zahlen , und ein Rechenzeichen beinhalten \n&quot;;

	float  number_1 = 0, number_2 = 0;
	char rechenzeichen_auswahl = '\0';

	cout &lt;&lt; &quot;Erste Zahl\n&quot;;
	cin &gt;&gt; number_1 ;
	cout &lt;&lt; &quot;Rechenzeichen(+  -  *   /  ) \n&quot;;
	cin &gt;&gt; rechenzeichen_auswahl;
	cout &lt;&lt;&quot;Zweite Zahl\n&quot;;
	cin &gt;&gt; number_2 ;

	ergebniss_komma =  rechen_function_kommazahlen(number_1 ,number_2 ,rechenzeichen_auswahl);
	cout &lt;&lt; &quot;Das Ergebnis ihrer Rechnung beträgt : &quot; &lt;&lt; ergebniss_komma &lt;&lt; endl ; 

	++first_while_condition ; // Verlassse die first_while_condition  Schleife

	// Bis hierhin mit Kommazahlen

	}

	else
	{
	cout &lt;&lt; &quot;Falsche Eingabe bitte erneut ganz oder komma ein \n&quot;;

	//Wiederhole die first_while_condition Schleife
	}

	}//Ende while first_while_Condition 
    cout &lt;&lt;&quot;Moechten sie noch eine Zahl zu ihrem Ergebnis dazu Rechnen , oder wollen sie wieder mit neuen Zahlen Rechnen\n&quot;
	     &lt;&lt;&quot;Wenn sie mit neuen Zahlen rechnen wollen geben sie  neu in die Konsole ein \n&quot;
		 &lt;&lt;&quot;Möchten sie mit dem alten Ergebnis weiterrechnen geben sie alt ein \n&quot;;

	string wie_gehts_weiter = &quot;&quot; ;
	cin  &gt;&gt; wie_gehts_weiter;

	int next_condition = 0;
	while (next_condition == 0)
	{   //ANFANG WHILE next_condition zum prüfen ob alt oder neu eingegeben wurde.
	if(wie_gehts_weiter == &quot;Neu&quot; || wie_gehts_weiter == &quot;neu&quot; || wie_gehts_weiter == &quot;NEU&quot;)

	{
		cout &lt;&lt; &quot;Taschenrechner wird neugestartet\n&quot; ;        
		++next_condition ;
	//Wiederhole die Hauptschleife (while global_condition)

	}

	else if(wie_gehts_weiter == &quot;alt&quot;||wie_gehts_weiter == &quot;Alt&quot;|| wie_gehts_weiter ==  &quot;ALT&quot;) // RECHNE MIT ALTEN ZAHLEN WEITER
	{
		int iCondition = 0;
		while (iCondition == 0) // while , weil man bei Eingabe von alt endlos weiterrechnen will bis der nutzer es stoppt.

	{ //Anfang while iCondition == 0

	if (which_numbers == &quot;ganz&quot; || which_numbers ==&quot;Ganz&quot;||which_numbers == &quot;GANZ&quot;)//Wenn das alte Ergebnis eine Ganzzahl war .....
    {
	char rechen_zeichen = '\0';
	long zahl = 0, ergebnis = 0;
    cout &lt;&lt; &quot;Welche Art von Rechnung wollen sie vornehmen an dem alten Ergebniss vornehmen(+  -  *   /  ) ? \n&quot;;
	cin &gt;&gt; rechen_zeichen ;
	cout &lt;&lt;&quot;Welche Zahl wollen sie zu ihrem alten Ergebniss dazu rechnen?\n&quot;;
	cin &gt;&gt; zahl ;
    ergebnis =  rechen_function_ganzzahlen(ergebniss_ganzzahlen,zahl,rechen_zeichen);  
	ergebniss_ganzzahlen = ergebnis ; //Damit das aktuelle Ergebniss immer übernommen wird und nicht mit dem ersten Ergebniss gerechnet wird.
	//Ganzzahlen dran denken immernoch in der Endlosschleife
	cout &lt;&lt; &quot;Ergebniss = &quot;&lt;&lt; ergebnis &lt;&lt; endl;
	}  

    else if (which_numbers == &quot;komma&quot; || which_numbers ==&quot;Komma&quot;||which_numbers == &quot;KOMMA&quot;)  //Wenn das alte Ergebnis eine Kommazahl war .....
    {
    char rechen_zeichen = '\0';
	float zahl = 0, ergebnis = 0;
    cout &lt;&lt; &quot;Welche Art von Rechnung wollen sie vornehmen an dem alten Ergebniss vornehmen(+  -  *   /  ) ? \n&quot;;
	cin &gt;&gt; rechen_zeichen ;
	cout &lt;&lt;&quot;Welche Zahl wollen sie zu ihrem alten Ergebniss dazu rechnen?\n&quot;;
	cin &gt;&gt; zahl ;
    ergebnis =  rechen_function_kommazahlen(ergebniss_komma,zahl,rechen_zeichen);  
	ergebniss_komma = ergebnis ; //Damit das aktuelle Ergebniss immer übernommen wird und nicht mit dem ersten Ergebniss gerechnet wird.
	//Ganzzahlen dran denken immernoch in der Endlosschleife
	cout &lt;&lt; &quot;Ergebniss = &quot;&lt;&lt; ergebnis &lt;&lt; endl;
    }

	int condition_while = 0;

	while (condition_while == 0)
	{  //ANFANG WHILE condition_while == 0
	cout &lt;&lt; &quot;Wollen sie mit dem alten Ergebniss weiterrechnen oder nicht\n&quot;
	     &lt;&lt; &quot; Antworten sie bitte nur mit ja oder nein \n&quot;;
	string yes_or_no ;
	cin &gt;&gt; yes_or_no ;

	if (yes_or_no == &quot;ja&quot; )
	{

	++condition_while ;//Springe nur aus der condition_while schleife NICHT aber aus der iCondition schleife
	}

	else if(yes_or_no == &quot;nein&quot;)
	{
	++condition_while;
	++iCondition; // Springe aus der while(iCondition == 0) Schleife
	}

	else 
	{
	cout &lt;&lt; &quot;Falsche Eingabe bitte erneut ja oder nein eingeben\n&quot;; 
	}

	} //ENDE WHILE condition_while == 0

    }//Ende der while(iCondition == 0) Schleife

    } // Ende  else if wiegehtsweiter == alt

    else
    {
    cout &lt;&lt; &quot;Falsche Eingabe bitte alt oder neu eingeben\n&quot;;

    }

	} //ENDE WHILE next_condition zum prüfen ob alt oder neu eingegeben wurde.

    }//ENDE WHILE (global_condition)
return 0 ;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2314365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314365</guid><dc:creator><![CDATA[DerNoob1993]]></dc:creator><pubDate>Wed, 10 Apr 2013 11:46:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Wed, 10 Apr 2013 12:20:06 GMT]]></title><description><![CDATA[<p>DerNoob1993 schrieb:</p>
<blockquote>
<p>Man kann alle cins auf einmal einlesen sprich 5+6 direkt nach dem allersten cout eingeben. Und dann werden alle anderen cout der Reihe nach ausgegeben,und die anderen cins übergangen ( das ergebniss ist sogar richtig) ,aber wieso kann ich in das erste cin die gesamte Rechnung einlesen verstehe das grade nicht. <a href="http://epvpimg.com/EZnbe" rel="nofollow">http://epvpimg.com/EZnbe</a> hier ist ein Bild wie ich das ganze <a href="http://meine.Er" rel="nofollow">meine.Er</a> liest ja zuerst nur den int wert ein wie kann ich in diesen denn die Rechnung einlesen?</p>
</blockquote>
<p>Falsches Verständnis, was cin ist. cin ist nicht &quot;lese etwas von der Tastatur ein&quot;. cin ist ein Streamobjekt, welches an den Zeichenstrom stdin gekoppelt ist. Ein Konsolenprogramm ist wie eine schwarze Kiste, da geht ein Lochstreifen<sup>*</sup> rein, da stehen Zeichen drauf (stdin) und es gehen zwei Lochstreifen raus (stdout und stderr). Das cin-Objekt sitzt in dieser schwarzen Kiste und sieht nur diesen Lochstreifen. Es weiß nicht, wo er her kommt oder wie lang er ist. Es kann sich nur die Zeichen auf diesem Lochstreifen angucken. Das passiert, wenn du irgendwelche Lesefunktionen auf cin aufrufst. Dann gucken diese Funktionen sich den Lochstreifen an, fahren ihn dabei ggf. weiter und warten eventuell auch auf weitere Zeichen, falls die aktuelle Funktion noch nicht fertig ist. Dieses Warten erweckt bei Anfängern oft den Eindruck, dass die Lesefunktionen irgendwie aktiv Eingaben von der Tastatur einlesen würden. Dabei warten sie bloß darauf, dass über den Zeichenstrom stdin weitere Zeichen erscheinen.</p>
<p>Wie kommen diese Zeichen nun nach stdin? Dies kann sehr verschieden sein (und das ist auch gut so). Ich nehme mal an, dass du dein Programm von irgendeiner Konsole startest und dabei keine weitere Aktion unternimmst, um stdin irgendwie umzuleiten. Die Konsole wird dann einfach ihr eigenes stdin an dein Programm weiterleiten. Aber wo kommt das stdin der Konsole her? Die Konsole läuft in einem Terminal (heutzutage meistens ein Terminalemulator). Eventuell läuft der Terminal(emulator) auch nochmal in irgendetwas anderem. Aber irgendwann kommt man an der untersten Schicht an und diese Programmschicht fragt tatsächlich irgendwie Zeichen von der Tastatur ab, die dann weitergeleitet werden. Diese Eingaben werden dann mehr oder weniger unverändert an dein Programm weitergeleitet, ohne jede Information darüber, wo sie herkommen, wann sie entstanden sind oder sonst etwas. Einfach bloß ein langer Bytestrom. Ich sage fast unverändert, denn direkt die Tastendrücke weiterzuleiten wäre eher unpraktisch. Irgendeine Ebene zwischen der Tastatur und deinem Programm sorgt auch noch dafür, dass die Sondertasten so funktionieren, wie man es kennt. Also dass man Mit Delete und Backspace die Eingabe verändern kann und erst mit Druck der Entertaste wird die Eingabe tatsächlich an die nächste Ebene weitergeleitet. Wieder sieht es so aus, als hätte die cin-Lesefunktion auf die Entertaste gewartet. Dabei hat sie bloß auf weitere Zeichen auf stdin gewartet, während eine ganz andere Ebene auf den Abschluss der Eingabe mittels Entertaste gewartet hat und erst dann die von ihr gesammelte Eingabe an die stdins der weiteren Ebenen weitergeleitet hat, bis sie letztendlich bei deiner cin-Lesefunktion angekommen sind.</p>
<p>Nun sollte auch verständlich sein, warum es egal ist, wann und wie du deine Eingabe für das Programm durchführst. Dein Programm sieht sowieso nur einen Zeichenstrom und es ist ihm egal, wie dieser Zustande kommt.</p>
<p><sup>*</sup>: Für die Jüngeren:<br />
<a href="http://en.wikipedia.org/wiki/Punched_tape" rel="nofollow">http://en.wikipedia.org/wiki/Punched_tape</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314378</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 10 Apr 2013 12:20:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Wed, 10 Apr 2013 13:26:53 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>DerNoob1993 schrieb:</p>
<blockquote>
<p>Man kann alle cins auf einmal einlesen sprich 5+6 direkt nach dem allersten cout eingeben. Und dann werden alle anderen cout der Reihe nach ausgegeben,und die anderen cins übergangen ( das ergebniss ist sogar richtig) ,aber wieso kann ich in das erste cin die gesamte Rechnung einlesen verstehe das grade nicht. <a href="http://epvpimg.com/EZnbe" rel="nofollow">http://epvpimg.com/EZnbe</a> hier ist ein Bild wie ich das ganze <a href="http://meine.Er" rel="nofollow">meine.Er</a> liest ja zuerst nur den int wert ein wie kann ich in diesen denn die Rechnung einlesen?</p>
</blockquote>
<p>Falsches Verständnis, was cin ist. cin ist nicht &quot;lese etwas von der Tastatur ein&quot;. cin ist ein Streamobjekt, welches an den Zeichenstrom stdin gekoppelt ist. Ein Konsolenprogramm ist wie eine schwarze Kiste, da geht ein Lochstreifen<sup>*</sup> rein, da stehen Zeichen drauf (stdin) und es gehen zwei Lochstreifen raus (stdout und stderr). Das cin-Objekt sitzt in dieser schwarzen Kiste und sieht nur diesen Lochstreifen. Es weiß nicht, wo er her kommt oder wie lang er ist. Es kann sich nur die Zeichen auf diesem Lochstreifen angucken. Das passiert, wenn du irgendwelche Lesefunktionen auf cin aufrufst. Dann gucken diese Funktionen sich den Lochstreifen an, fahren ihn dabei ggf. weiter und warten eventuell auch auf weitere Zeichen, falls die aktuelle Funktion noch nicht fertig ist. Dieses Warten erweckt bei Anfängern oft den Eindruck, dass die Lesefunktionen irgendwie aktiv Eingaben von der Tastatur einlesen würden. Dabei warten sie bloß darauf, dass über den Zeichenstrom stdin weitere Zeichen erscheinen.</p>
<p>Wie kommen diese Zeichen nun nach stdin? Dies kann sehr verschieden sein (und das ist auch gut so). Ich nehme mal an, dass du dein Programm von irgendeiner Konsole startest und dabei keine weitere Aktion unternimmst, um stdin irgendwie umzuleiten. Die Konsole wird dann einfach ihr eigenes stdin an dein Programm weiterleiten. Aber wo kommt das stdin der Konsole her? Die Konsole läuft in einem Terminal (heutzutage meistens ein Terminalemulator). Eventuell läuft der Terminal(emulator) auch nochmal in irgendetwas anderem. Aber irgendwann kommt man an der untersten Schicht an und diese Programmschicht fragt tatsächlich irgendwie Zeichen von der Tastatur ab, die dann weitergeleitet werden. Diese Eingaben werden dann mehr oder weniger unverändert an dein Programm weitergeleitet, ohne jede Information darüber, wo sie herkommen, wann sie entstanden sind oder sonst etwas. Einfach bloß ein langer Bytestrom. Ich sage fast unverändert, denn direkt die Tastendrücke weiterzuleiten wäre eher unpraktisch. Irgendeine Ebene zwischen der Tastatur und deinem Programm sorgt auch noch dafür, dass die Sondertasten so funktionieren, wie man es kennt. Also dass man Mit Delete und Backspace die Eingabe verändern kann und erst mit Druck der Entertaste wird die Eingabe tatsächlich an die nächste Ebene weitergeleitet. Wieder sieht es so aus, als hätte die cin-Lesefunktion auf die Entertaste gewartet. Dabei hat sie bloß auf weitere Zeichen auf stdin gewartet, während eine ganz andere Ebene auf den Abschluss der Eingabe mittels Entertaste gewartet hat und erst dann die von ihr gesammelte Eingabe an die stdins der weiteren Ebenen weitergeleitet hat, bis sie letztendlich bei deiner cin-Lesefunktion angekommen sind.</p>
<p>Nun sollte auch verständlich sein, warum es egal ist, wann und wie du deine Eingabe für das Programm durchführst. Dein Programm sieht sowieso nur einen Zeichenstrom und es ist ihm egal, wie dieser Zustande kommt.</p>
<p><sup>*</sup>: Für die Jüngeren:<br />
<a href="http://en.wikipedia.org/wiki/Punched_tape" rel="nofollow">http://en.wikipedia.org/wiki/Punched_tape</a></p>
</blockquote>
<p>Vielen Dank für deine ausführliche Antwort ich denke ich habe das Prinzip von cin jetzt einigermaßen verstanden.</p>
<p>Ich weiß ich frage echt viel , und zum Teil auch echt doofe Fragen <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="😃"
    /> , aber ich habe da grade noch ein Problem an dem ich nicht weiterkomme.</p>
<p>Es geht darum ,dass ich in ner while Schleife prüfen möchte ,ob der User den richtigen Typ der Variable einliest ( nicht ,dass er nachher in einen int wert einen string einliest , und das Programm abstürzt ,oder sinnloses ausgibt <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="🙂"
    /><br />
Mein Lösungsansatz habe ich in einem kleinen &quot;Testprojekt&quot; getestet ,allerdings klappt das ganze einfach nicht.</p>
<pre><code>#include &lt;iostream&gt;

int main()
{       long number_one = 0;
        int richtige_eingabe = 0 ;
	while(richtige_eingabe == 0)
	{
	cout &lt;&lt; &quot;Erste Zahl\n&quot;;

	if( (cin &gt;&gt; number_one ))
	{
	++richtige_eingabe;
	}

       else if( !( cin &gt;&gt; number_one))
       {}

       } 
}
</code></pre>
<p>Er liest hier number_one nur einmal ein und hängt dann in einer Endlosschleife in welcher er den Text &quot;Erste Zahl&quot; unendlich oft ausgibt , aber eben nicht von neu in cin einliest . Habe auch schon versucht bei falscher Eingabe mittels ZeroMemory den Wert zurückzusetzen , aber da passiert nur genau das selbe.Der Text wird dauerhaft ausgegeben , aber es wird nichts neues eingelesen.<br />
Sinn der Schleife sollte sein ,dass bei falscher eingabe wie z.B. asdasd in einen int Typ die Schleife von neu beginnt und man die Zahl erneut einlesen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314405</guid><dc:creator><![CDATA[DerNoob1993]]></dc:creator><pubDate>Wed, 10 Apr 2013 13:26:53 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Wed, 10 Apr 2013 14:03:29 GMT]]></title><description><![CDATA[<p>Hier gehen drei Dinge schief:<br />
1. Nachdem eine Eingabe fehlgeschlagen ist, so befindet sich der Stream in einem Fehlerzustand und es schlagen alle weiteren Aktionen fehl, bis man sich darum kümmert (z.B. mit clear()).<br />
2. Danach sind natürlich immer noch die Zeichen auf dem metaphorischen Lochstreifen, die zum Fehlschlag geführt haben. Da muss man sich auch drum kümmern, z.B. mit ignore().<br />
3. In Zeile 16 steht bei dir ja wieder etwas aus dem Stream gelesen (oder wenigstens wird es versucht). Das ist bestimmt nicht die Logik, die du dir vorgestellt hast.</p>
<p>So kann man das beispielsweise machen:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;cctype&gt;

using namespace std;

void skip_word(istream &amp;in)
{
  for (char c = in.peek(); in &amp;&amp; isgraph(c); c = in.peek())
    in.ignore(1);
}

int main()
{
  int i;
  for (;;)
    {
      cin &gt;&gt; i;
      if (!cin &amp;&amp; !cin.eof())
        {
          cout &lt;&lt; &quot;Das war keine Zahl\n&quot;;
          cin.clear();
          skip_word(cin);
        }
      else
        break;
    }
  cout &lt;&lt; &quot;Zahl gelesen: &quot; &lt;&lt; i &lt;&lt; '\n';
}
</code></pre>
<p>Du wirst merken, dieses schon relativ komplexe Beispiel lässt noch viele Wünsche offen. Falls du vor hast, das weiter zu treiben und weitere Fehler abzufangen, lass dir gesagt sein, dass dies in die Richtung geht, ein eigenes GUI-Framework zu schreiben. Das gibt es aber schon längst und in viel besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314427</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 10 Apr 2013 14:03:29 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei verschachtelten while&#x2F;if Anweisungen on Wed, 10 Apr 2013 14:47:19 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Hier gehen drei Dinge schief:<br />
1. Nachdem eine Eingabe fehlgeschlagen ist, so befindet sich der Stream in einem Fehlerzustand und es schlagen alle weiteren Aktionen fehl, bis man sich darum kümmert (z.B. mit clear()).<br />
2. Danach sind natürlich immer noch die Zeichen auf dem metaphorischen Lochstreifen, die zum Fehlschlag geführt haben. Da muss man sich auch drum kümmern, z.B. mit ignore().<br />
3. In Zeile 16 steht bei dir ja wieder etwas aus dem Stream gelesen (oder wenigstens wird es versucht). Das ist bestimmt nicht die Logik, die du dir vorgestellt hast.</p>
<p>So kann man das beispielsweise machen:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;cctype&gt;

using namespace std;

void skip_word(istream &amp;in)
{
  for (char c = in.peek(); in &amp;&amp; isgraph(c); c = in.peek())
    in.ignore(1);
}

int main()
{
  int i;
  for (;;)
    {
      cin &gt;&gt; i;
      if (!cin &amp;&amp; !cin.eof())
        {
          cout &lt;&lt; &quot;Das war keine Zahl\n&quot;;
          cin.clear();
          skip_word(cin);
        }
      else
        break;
    }
  cout &lt;&lt; &quot;Zahl gelesen: &quot; &lt;&lt; i &lt;&lt; '\n';
}
</code></pre>
<p>Du wirst merken, dieses schon relativ komplexe Beispiel lässt noch viele Wünsche offen. Falls du vor hast, das weiter zu treiben und weitere Fehler abzufangen, lass dir gesagt sein, dass dies in die Richtung geht, ein eigenes GUI-Framework zu schreiben. Das gibt es aber schon längst und in viel besser.</p>
</blockquote>
<p>Ich danke dir <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="🙂"
    /><br />
Ich habe denke ich verstanden wie das ganze funktioniert.<br />
Als erstes wenn das cin fehlschlägt benutzt man die cin.clear() Funktion um soweit ich richtig verstanden habe den Eingabebuffer zu leeren. Als nächstes übergibt man den stream an die selbst geschriebene Funktion welche jedes Zeichen des Streams von Anfang bis Ende ignoriert(löscht?).<br />
Dadurch kann man es danach auch wieder neu einlesen ,und die if schleife wird nicht endlos ausgeführt.<br />
Habe ich das soweit richtig verstanden , oder ist da etwas noch falsch an dem wie ich es aufgefasst habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2314445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2314445</guid><dc:creator><![CDATA[DerNoob1993]]></dc:creator><pubDate>Wed, 10 Apr 2013 14:47:19 GMT</pubDate></item></channel></rss>