<?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[Ungewollte Endlosschleife]]></title><description><![CDATA[<p>Hallo.<br />
Habe ein Menü zur Auswahl von gewissen Funktionen. gibt man statt einer zahl jedoch einen Buchstaben/ ein Zeichen ein, wird das Menü unendlich oft durchgeschleust. Die int Variable der Auswahl bleibt anscheinend immer die selbe, oder zumindest fehlerhaft. Auswahl = NULL; sowohl auch Auswahl = 0 haben nicht geholfen.<br />
Mit delete &amp;vAuswahl kriegt das Programm einen Hänger.<br />
Hier mal der Code (Nicht wunder, Auswahl heisst glaube ich Kommando)</p>
<pre><code class="language-cpp">int main()
{
	Eingang();
	do
	{
	Kommando = 0;
	Kommando = Menü();						// Auswahlmöglichkeiten
	Auswahl(Kommando);				//Switch Case
	}while(Kommando != 10);				// 10 = Beenden

return 0;
}

int Menü()
{
	int Kommando;

	Kommando = 0;
	cout
		&lt;&lt;&quot;[1]&quot;	&lt;&lt;setw(7)	&lt;&lt;&quot;Glücksspiel \n&quot;
		&lt;&lt;&quot;[2]&quot;	&lt;&lt;setw(7)	&lt;&lt;&quot;Wortspiel \n&quot;
		&lt;&lt;&quot;[3]&quot; &lt;&lt;setw(7)	&lt;&lt;&quot;Bitgrößen von Variabeln \n&quot;
		&lt;&lt;&quot;[4]&quot; &lt;&lt;setw(7)	&lt;&lt;&quot;Referenzen &amp; Zeiger \n&quot;
		&lt;&lt;&quot;[10]&quot; &lt;&lt;setw(7)	&lt;&lt;&quot;Ende \n&quot;
		&lt;&lt;&quot;Ihre Auswahl:&quot;;
	cin
		&gt;&gt;Kommando;

	return (Kommando);

}

void Auswahl(int &amp;vAuswahl)
{
	switch (Kommando)
	{
		case 1:

			Glückszahl();
			break;

		case 2:
			Wortspiel();
			break;
		case 3:
			SizeOf();
			break;
		case 4:
			ref();
			break;

		default:
			{cout
				&lt;&lt;&quot;Keine gültige Eingabe!&quot;
				&lt;&lt;endl;
			vAuswahl=0;
			delete &amp;vAuswahl;
			break;
			}
	}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/284352/ungewollte-endlosschleife</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 03:21:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284352.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Mar 2011 17:35:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 17:36:38 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Habe ein Menü zur Auswahl von gewissen Funktionen. gibt man statt einer zahl jedoch einen Buchstaben/ ein Zeichen ein, wird das Menü unendlich oft durchgeschleust. Die int Variable der Auswahl bleibt anscheinend immer die selbe, oder zumindest fehlerhaft. Auswahl = NULL; sowohl auch Auswahl = 0 haben nicht geholfen.<br />
Mit delete &amp;vAuswahl kriegt das Programm einen Hänger.<br />
Hier mal der Code (Nicht wunder, Auswahl heisst glaube ich Kommando)</p>
<pre><code class="language-cpp">int main()
{
	Eingang();
	do
	{
	Kommando = 0;
	Kommando = Menü();						// Auswahlmöglichkeiten
	Auswahl(Kommando);				//Switch Case
	}while(Kommando != 10);				// 10 = Beenden

return 0;
}

int Menü()
{
	int Kommando;

	Kommando = 0;
	cout
		&lt;&lt;&quot;[1]&quot;	&lt;&lt;setw(7)	&lt;&lt;&quot;Glücksspiel \n&quot;
		&lt;&lt;&quot;[2]&quot;	&lt;&lt;setw(7)	&lt;&lt;&quot;Wortspiel \n&quot;
		&lt;&lt;&quot;[3]&quot; &lt;&lt;setw(7)	&lt;&lt;&quot;Bitgrößen von Variabeln \n&quot;
		&lt;&lt;&quot;[4]&quot; &lt;&lt;setw(7)	&lt;&lt;&quot;Referenzen &amp; Zeiger \n&quot;
		&lt;&lt;&quot;[10]&quot; &lt;&lt;setw(7)	&lt;&lt;&quot;Ende \n&quot;
		&lt;&lt;&quot;Ihre Auswahl:&quot;;
	cin
		&gt;&gt;Kommando;

	return (Kommando);

}

void Auswahl(int &amp;vAuswahl)
{
	switch (Kommando)
	{
		case 1:

			Glückszahl();
			break;

		case 2:
			Wortspiel();
			break;
		case 3:
			SizeOf();
			break;
		case 4:
			ref();
			break;

		default:
			{cout
				&lt;&lt;&quot;Keine gültige Eingabe!&quot;
				&lt;&lt;endl;
			vAuswahl=0;
			delete &amp;vAuswahl;
			break;
			}
	}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2042469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042469</guid><dc:creator><![CDATA[Hänselchen]]></dc:creator><pubDate>Wed, 30 Mar 2011 17:36:38 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 17:37:32 GMT]]></title><description><![CDATA[<p>Und wo ist Kommando in der main deklariert? Nirgends. Namen mit Umlauten sind keine gute Idee <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/2042473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042473</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 30 Mar 2011 17:37:32 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 17:38:22 GMT]]></title><description><![CDATA[<p>Ne, die ist in der Headerdatei deklariert. Keine gute Idee, nein? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042474</guid><dc:creator><![CDATA[Hänselchen]]></dc:creator><pubDate>Wed, 30 Mar 2011 17:38:22 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 17:44:11 GMT]]></title><description><![CDATA[<p>Hänselchen schrieb:</p>
<blockquote>
<p>Ne, die ist in der Headerdatei deklariert. Keine gute Idee, nein? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Globale Variablen sind keine tolle Sache :p vorallem weil du es in einer Funktion lokal nochmals überschreibst.</p>
<pre><code class="language-cpp">delete &amp;vAuswahl;
</code></pre>
<p>Das entfernen weil die variable nicht mit new erstellt wurde...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042478</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 30 Mar 2011 17:44:11 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 17:47:15 GMT]]></title><description><![CDATA[<p>Hm, meine headerdate sieht so aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iomanip&gt;
#include &lt;conio.h&gt;
#include &lt;string&gt;

using namespace std;

// Variablen //

// FUNKTIONEN //

	int Menü();
	void Auswahl(int &amp;vAuswahl);
	void Glückszahl();
	void Wortspiel();
	void SizeOf();
	void Eingang();
	void Klassen();
	void Indexoperatoren();
	void ref();
</code></pre>
<p>Ich fand die Main so überlaufen, wenn da so tausende Funktionen stehen... Aber dann sind die ja alle global, oder?</p>
<p>Und zum Problem an sich: Und wie lautet die lösung? :&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042483</guid><dc:creator><![CDATA[Hänselchen]]></dc:creator><pubDate>Wed, 30 Mar 2011 17:47:15 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 17:50:44 GMT]]></title><description><![CDATA[<p>Wie wäre es mit anderen Dateien?</p>
<p>main.cpp<br />
gluecksspiel.cpp<br />
gluecksspiel.h<br />
wortspiel.cpp<br />
wortspiel.h<br />
sonstiges.cpp<br />
sonstiges.h<br />
...</p>
<p>Aber da musst du noch ein wenig nachholen bei deinen Grundlagen. Fang erstmal an Parameterübergaben zu nutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042485</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 30 Mar 2011 17:50:44 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 17:51:26 GMT]]></title><description><![CDATA[<p>du musst den eingabepuffer löschen</p>
<p>guckst du mal in die faq</p>
<p>geht irgendwie mit cin.clear und noch was...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042487</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 30 Mar 2011 17:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 17:53:27 GMT]]></title><description><![CDATA[<p>Problem ist, ich weiss nie WIE ich üben soll...</p>
<p>Ich habe zwar zu Mass gute Bücher doch ich arbeite lieber praktisch und hab auch gerne Programme, in denen ich das gelesene ausprobieren kann.</p>
<p>Kennt ihr vielleicht ein geeignetes Projekt, in dem ich sowas üben könnte, oder allgemein Tipps dazu? Weil ehrlich gesagt, weiss ich nie was und wie ich lernen soll...</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042489</guid><dc:creator><![CDATA[Hänselchen]]></dc:creator><pubDate>Wed, 30 Mar 2011 17:53:27 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 17:59:53 GMT]]></title><description><![CDATA[<p>Angenommen der Benutzer gibt in Menü() eine 10 ein, um das Programm zu beenden, dann steht in der globalen(?) Kommando eine 10, da du dieser den Rückgabewert von Menü() zuweist. Danach rufst du Auswahl(...) auf und übergibst die Variable Kommando per Referenz(!). D. h. vAuswahl ist dann eine Referenz auf Kommando. In deinem switch setzt du vAuswahl auf 0, da keiner deiner Zweige zutrifft (vAuswahl == Kommando == 10), dadurch wird auch Kommando auf 0 gesetzt und die Bedingung Kommando != 10 in deiner do-while-Schleife bleibt true, sodass sie weiter läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042493</guid><dc:creator><![CDATA[GyroGearloose]]></dc:creator><pubDate>Wed, 30 Mar 2011 17:59:53 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 18:15:39 GMT]]></title><description><![CDATA[<p>So sollte es besser gehen (ungetestet):</p>
<pre><code class="language-cpp">int main()
{
    Eingang();
	int Kommando = 0;
    do
    {
		Kommando = Menue();		// Auswahlmöglichkeiten
		Auswahl(Kommando);		// Switch Case
    } while(Kommando != 10); 	// 10 = Beenden
}

int Menue()
{
    int Kommando = 0;
    cout
        &lt;&lt;&quot;[1]&quot; &lt;&lt;setw(7) &lt;&lt;&quot;Glücksspiel \n&quot;
        &lt;&lt;&quot;[2]&quot; &lt;&lt;setw(7) &lt;&lt;&quot;Wortspiel \n&quot;
        &lt;&lt;&quot;[3]&quot; &lt;&lt;setw(7) &lt;&lt;&quot;Bitgrößen von Variabeln \n&quot;
        &lt;&lt;&quot;[4]&quot; &lt;&lt;setw(7) &lt;&lt;&quot;Referenzen &amp; Zeiger \n&quot;
        &lt;&lt;&quot;[10]&quot; &lt;&lt;setw(7) &lt;&lt;&quot;Ende \n&quot;
        &lt;&lt;&quot;Ihre Auswahl:&quot;;
    cin
        &gt;&gt;Kommando;

    return Kommando;
}

void Auswahl(int Kommando)
{
    switch (Kommando)
    {
        case 1:
            Glueckszahl();
            break;
        case 2:
            Wortspiel();
            break;
        case 3:
            SizeOf();
            break;
        case 4:
            ref();
            break;
        default:	// Tritt auch bei Kommando==10 (Beenden) ein!
            cout&lt;&lt;&quot;Keine gültige Eingabe!&quot;&lt;&lt;endl;
            break;
    }
}
</code></pre>
<p>Beachte: Es gibt hier drei Variablen mit dem Namen Kommando. Die erste ist lokal in der Funktion main() und ihr wird der Rückgabewert von Menue() zugewiesen. Die zweite ist lokal in Menue(), wird vom Benutzer belegt und dann wird ihr Inhalt als Rückgabewert von Menue() benutzt. Die dritte ist lokaler Parameter von Auswahl(...). In sie wird der Wert der lokalen Kommando-Variable von main() beim Aufruf in main() kopiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042508</guid><dc:creator><![CDATA[GyroGearloose]]></dc:creator><pubDate>Wed, 30 Mar 2011 18:15:39 GMT</pubDate></item><item><title><![CDATA[Reply to Ungewollte Endlosschleife on Wed, 30 Mar 2011 21:01:07 GMT]]></title><description><![CDATA[<p>Hänselchen schrieb:</p>
<blockquote>
<p>Hallo.<br />
Habe ein Menü zur Auswahl von gewissen Funktionen. <strong>gibt man statt einer zahl jedoch einen Buchstaben/ ein Zeichen ein</strong>, wird das Menü unendlich oft durchgeschleust.</p>
</blockquote>
<p>also das ist eigentlich deine frag, oder nicht?!?</p>
<p>und genau das problem löst man durch folgendes konstrukt</p>
<pre><code class="language-cpp">std::cin.clear();
std::cin.ignore(std::cin.rdbuf()-&gt;in_avail());
// std::cin.get(); // für warten dazusetzen, also um z.b. die console vor dem schliessen bewahren
</code></pre>
<p>und dies schreibst du am besten hinter jede eingabe (ist aber am langsamsten, wobei hier eh der benutzer der langsamste punkt ist, womit das hier nichts ausmachen dürfte)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2042558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2042558</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 30 Mar 2011 21:01:07 GMT</pubDate></item></channel></rss>