<?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[Wie beende ich zwei select-cases &#x2F; for-schleife richtig?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte in einer Funktion mehrere Benutzereingaben in einer Switch-Case Auswahl abfangen und diese verarbeiten. Wie löse ich das Problem, dass in einer Funktion zwei Switch-Cases zu funktionieren haben und beide mit einer for-Schleife so lange ausgeführt werden, bis eine 4 bei der ersten Auswahl, oder eine 3 bei der zweiten Auswahl gedrückt wird?</p>
<pre><code>void Benutzereingabe1(MeinDatenTyp &amp; MeinStruct, MeinZweiterDatentyp &amp; MeineZweiterStrukt)
{
	int                          Auswahl = 0;
	int                          AuswahlZwei = 0;

	for (Auswahl = 0; Auswahl &lt; 3; Auswahl ++)
	{
		cin &gt;&gt; Auswahl;

		if (Auswahl != 1 &amp;&amp; Auswahl != 2 &amp;&amp; Auswahl != 3)
		{
			printf(&quot;Nur Zahlen von 1 bis 4 eingeben: \n&quot;);
			break;
		}

		switch (Auswahl)
		{
		case 1:
//Mach etwas
			cin &gt;&gt; AuswahlZwei;
			//TODO: Errorhandling iChoiceEditor

			switch (AuswahlZwei)
			{
			case 1:
				printf(&quot;eins&quot;);
				//funktion1();
				break;
			case 2:
				printf(&quot;zwei&quot;);
				//funktion2();
				break;
			case 3:
				printf(&quot;drei&quot;);
				//funktion3();
				break;
			default:
				printf(&quot;Nur 1,2 oder 3 eingeben!&quot;);
				//no break
			}
			break;

		case 2:
			for (;;)
			{
				funktion4();
					continue;
				}
				break;
			}
			funktion5();
			break;
		case 3:
			printf(&quot;Wird beendet!&quot;);
			break;

		default:
			printf(&quot;Nur 1 bis 4 moeglich.&quot;);
			// no break
		}
		printf(&quot;\n Eine beliebige Taste druecken um weiterzumachen.\n&quot;);
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/329190/wie-beende-ich-zwei-select-cases-for-schleife-richtig</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 01:13:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329190.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Nov 2014 19:19:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie beende ich zwei select-cases &#x2F; for-schleife richtig? on Tue, 11 Nov 2014 19:19:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte in einer Funktion mehrere Benutzereingaben in einer Switch-Case Auswahl abfangen und diese verarbeiten. Wie löse ich das Problem, dass in einer Funktion zwei Switch-Cases zu funktionieren haben und beide mit einer for-Schleife so lange ausgeführt werden, bis eine 4 bei der ersten Auswahl, oder eine 3 bei der zweiten Auswahl gedrückt wird?</p>
<pre><code>void Benutzereingabe1(MeinDatenTyp &amp; MeinStruct, MeinZweiterDatentyp &amp; MeineZweiterStrukt)
{
	int                          Auswahl = 0;
	int                          AuswahlZwei = 0;

	for (Auswahl = 0; Auswahl &lt; 3; Auswahl ++)
	{
		cin &gt;&gt; Auswahl;

		if (Auswahl != 1 &amp;&amp; Auswahl != 2 &amp;&amp; Auswahl != 3)
		{
			printf(&quot;Nur Zahlen von 1 bis 4 eingeben: \n&quot;);
			break;
		}

		switch (Auswahl)
		{
		case 1:
//Mach etwas
			cin &gt;&gt; AuswahlZwei;
			//TODO: Errorhandling iChoiceEditor

			switch (AuswahlZwei)
			{
			case 1:
				printf(&quot;eins&quot;);
				//funktion1();
				break;
			case 2:
				printf(&quot;zwei&quot;);
				//funktion2();
				break;
			case 3:
				printf(&quot;drei&quot;);
				//funktion3();
				break;
			default:
				printf(&quot;Nur 1,2 oder 3 eingeben!&quot;);
				//no break
			}
			break;

		case 2:
			for (;;)
			{
				funktion4();
					continue;
				}
				break;
			}
			funktion5();
			break;
		case 3:
			printf(&quot;Wird beendet!&quot;);
			break;

		default:
			printf(&quot;Nur 1 bis 4 moeglich.&quot;);
			// no break
		}
		printf(&quot;\n Eine beliebige Taste druecken um weiterzumachen.\n&quot;);
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2427096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2427096</guid><dc:creator><![CDATA[b1419589]]></dc:creator><pubDate>Tue, 11 Nov 2014 19:19:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wie beende ich zwei select-cases &#x2F; for-schleife richtig? on Tue, 11 Nov 2014 20:40:13 GMT]]></title><description><![CDATA[<p>Do one thing and one thing right.</p>
<p>Deine Funktion tut mehrere Dinge: Eingabe, Bereichsprüfung, Verarbeitung 1. Eingabe, dito 2. Eingabe, Endlosschleife (waaah) usw.<br />
Trenne das Ganze erstmal in mehrere Funktionen, die EINE Sache richtig machen. Dann kriegt das mehr Struktur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2427111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2427111</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Tue, 11 Nov 2014 20:40:13 GMT</pubDate></item><item><title><![CDATA[Reply to Wie beende ich zwei select-cases &#x2F; for-schleife richtig? on Wed, 12 Nov 2014 07:49:09 GMT]]></title><description><![CDATA[<p>Wenn Du diese Funktion durch 'nen Compiler bekomnmst, wirf ihn weg.</p>
<p>Die Zeile 49 schließt die Klammer in Zeile 46.</p>
<p>Die Zeile 51 schließt daher die Klammmer in Zeile 17</p>
<p>Die Zeilen 54 und 58 sind deshalb außerhalb eines switch und daher nicht zulässig.</p>
<p>Die Zeile 64 hat kein Gegenstück und ist daher auch unzulässig.</p>
<p>Von 45 bis 49 hat Du eine Endlosschleife, des Rest des Caseblocks ist daher unnötig. Das continue am Ende der Schleife ist ebenfalls unnötig.</p>
<p>Ansonsten schließe ich mich minastaros' Anmerkungen an.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2427160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2427160</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Wed, 12 Nov 2014 07:49:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wie beende ich zwei select-cases &#x2F; for-schleife richtig? on Wed, 12 Nov 2014 08:13:46 GMT]]></title><description><![CDATA[<p>Um Deine Frage zu beantworten, Nachtrag:</p>
<p>Ein break beendet immer nur die direkt umschließende Schleife/Switch-statement. Mehrere geschachtelte Schleifen/switches zu beenden ist mit einem break nicht möglich. Zu Lösung gibt es mehrere Möglichkeiten:</p>
<p>1. Du definierst eine Fehlervariable, die Du an geeigneter Stelle überprüfst:</p>
<pre><code>bool errFlag = false;

for( xyz )
{
    for( abc )
    {
        if( irgendwas )
        {
             errFlag = true;
             break;
        }
    }
    if( errFlag )
        break;

    blabla;
}
</code></pre>
<p>2. Du wirfst eine Exception:</p>
<pre><code>try
{
    for( xyz )
    {
        for( abc )
        {
            if( irgendwas )
                 throw true;
        }

        blabla;
    }
}
catch( ... )
{
}
</code></pre>
<p>3. Du benutzt einen Sprung (Aber <strong>nur</strong>, wenn <strong>Performanz</strong> ein Problem darstellt):</p>
<pre><code>for( xyz )
{
    for( abc )
    {
        if( irgendwas )
             goto errExit;
    }

    blabla;
}
errExit:
</code></pre>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2427167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2427167</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Wed, 12 Nov 2014 08:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wie beende ich zwei select-cases &#x2F; for-schleife richtig? on Wed, 12 Nov 2014 08:58:42 GMT]]></title><description><![CDATA[<p>goto für break2 halte ich für weniger verwerflich als die künstliche variable und beides ist um lichtjahre weniger verwerlich als eine reine kontrollflussexception.</p>
<p>normalerweise kann man die innere schleife rauslösen und mit gutem namen und eigenem zweck (wichtig!) in eine funktion auslagern und irgendwie verschwindet das problem (man sieht die variable nicht mehr).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2427175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2427175</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 12 Nov 2014 08:58:42 GMT</pubDate></item><item><title><![CDATA[Reply to Wie beende ich zwei select-cases &#x2F; for-schleife richtig? on Wed, 12 Nov 2014 09:24:09 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>goto für break2 halte ich für weniger verwerflich als die künstliche variable und beides ist um lichtjahre weniger verwerlich als eine reine kontrollflussexception.</p>
</blockquote>
<p>Das ist auch der einzige Fall, wo ich ein goto akzeptiere.</p>
<p>volkard schrieb:</p>
<blockquote>
<p>normalerweise kann man die innere schleife rauslösen und mit gutem namen und eigenem zweck (wichtig!) in eine funktion auslagern und irgendwie verschwindet das problem (man sieht die variable nicht mehr).</p>
</blockquote>
<p>Das wiederum ist meistens die beste Lösung.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2427184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2427184</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Wed, 12 Nov 2014 09:24:09 GMT</pubDate></item></channel></rss>