<?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[springerproblem]]></title><description><![CDATA[<p>hallo, muss zur zeit das springerproblem in c++ implementieren.<br />
leider komm ich mit der rekursion noch nicht ganz klar. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
wär nett wenn sich jemand mal den code ansehen könnte und mir vielleicht eine denkhilfe geben könnte.</p>
<p>danke im voraus</p>
<p>gruß sigint</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;iomanip&gt;</p>
<p>using namespace std;</p>
<p>void springer(int, int, int);</p>
<p>bool spielbrett [5][5];<br />
int weg [5][5];<br />
int zug = 25;<br />
int x;<br />
int y;</p>
<p>void main()<br />
{</p>
<p>for(int i = 0; i&lt;5; i++)<br />
{<br />
for(int j = 0; j&lt;5;j++)<br />
{<br />
spielbrett[i][j] = true;<br />
}<br />
}</p>
<p>for(int i = 0; i&lt;5;i++)<br />
{<br />
for(int j = 0; j&lt;5;j++)<br />
{<br />
cout &lt;&lt; spielbrett[i][j] &lt;&lt; &quot; &quot;;<br />
}<br />
cout &lt;&lt; endl;<br />
}</p>
<p>cout &lt;&lt; &quot;\t THE KNIGHT'S TOUR \n\n&quot;;<br />
do<br />
{ cout &lt;&lt; &quot;Please choose the X startpoint for the knight: \t&quot;;<br />
cin &gt;&gt; x;<br />
} while(x&lt;0||x&gt;4);</p>
<p>do<br />
{ cout &lt;&lt; &quot;Please choose the Y startpoint for the knight: \t&quot;;<br />
cin &gt;&gt; y;<br />
} while (y&lt;0||y&gt;4);</p>
<p>cout &lt;&lt; &quot;\nThe way of the knight will be shown\n&quot;;</p>
<p>springer(zug,x,y);<br />
char u;<br />
cin &gt;&gt; u;<br />
}</p>
<p>void springer(int zug, int x, int y)<br />
{</p>
<p>for(int i = 0; i&lt;5;i++)<br />
{<br />
for(int j = 0; j&lt;5;j++)<br />
{<br />
cout &lt;&lt; spielbrett[i][j] &lt;&lt; &quot; &quot;;<br />
}<br />
cout &lt;&lt; endl;<br />
}</p>
<p>cout &lt;&lt; endl;</p>
<p>if(zug&gt;0)<br />
{<br />
if((x-2)&gt;=0 &amp;&amp; (y-1)&gt;=0 &amp;&amp; spielbrett[x-2][y-1])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x-2,y-1);}</p>
<p>else if ((x+2)&lt;=4 &amp;&amp; (y-1)&gt;=0 &amp;&amp; spielbrett[x+2][y-1])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x+2,y-1);}</p>
<p>else if ((x+1)&lt;=4 &amp;&amp; (y-2)&gt;=0 &amp;&amp; spielbrett[x+1][y-2])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x+1,y-2);}</p>
<p>else if ((x-1)&gt;=0 &amp;&amp; (y-2)&gt;=0 &amp;&amp; spielbrett[x-1][y-2])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x-1,y-2);}</p>
<p>else if ((x-2)&gt;=0 &amp;&amp; (y+1)&lt;=4 &amp;&amp; spielbrett[x-2][y+1])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x-2,y+1);}</p>
<p>else if ((x+2)&lt;=4 &amp;&amp; (y+1)&lt;=4 &amp;&amp; spielbrett[x+2][y+1])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x+2,y+1);}</p>
<p>else if ((x-1)&gt;=0 &amp;&amp; (y+2)&lt;=4 &amp;&amp; spielbrett[x-1][y+2])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x-1,y+2);}</p>
<p>else if ((x+1)&lt;=4 &amp;&amp; (y+2)&lt;=4 &amp;&amp; spielbrett[x+1][y+2])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x+1,y+2);}<br />
}<br />
else<br />
cout &lt;&lt; &quot;Eine Lösung wurde gefunden&quot;;</p>
<p>}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164453/springerproblem</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 18:13:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164453.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Nov 2006 13:15:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to springerproblem on Wed, 08 Nov 2006 13:15:59 GMT]]></title><description><![CDATA[<p>hallo, muss zur zeit das springerproblem in c++ implementieren.<br />
leider komm ich mit der rekursion noch nicht ganz klar. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
wär nett wenn sich jemand mal den code ansehen könnte und mir vielleicht eine denkhilfe geben könnte.</p>
<p>danke im voraus</p>
<p>gruß sigint</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;iomanip&gt;</p>
<p>using namespace std;</p>
<p>void springer(int, int, int);</p>
<p>bool spielbrett [5][5];<br />
int weg [5][5];<br />
int zug = 25;<br />
int x;<br />
int y;</p>
<p>void main()<br />
{</p>
<p>for(int i = 0; i&lt;5; i++)<br />
{<br />
for(int j = 0; j&lt;5;j++)<br />
{<br />
spielbrett[i][j] = true;<br />
}<br />
}</p>
<p>for(int i = 0; i&lt;5;i++)<br />
{<br />
for(int j = 0; j&lt;5;j++)<br />
{<br />
cout &lt;&lt; spielbrett[i][j] &lt;&lt; &quot; &quot;;<br />
}<br />
cout &lt;&lt; endl;<br />
}</p>
<p>cout &lt;&lt; &quot;\t THE KNIGHT'S TOUR \n\n&quot;;<br />
do<br />
{ cout &lt;&lt; &quot;Please choose the X startpoint for the knight: \t&quot;;<br />
cin &gt;&gt; x;<br />
} while(x&lt;0||x&gt;4);</p>
<p>do<br />
{ cout &lt;&lt; &quot;Please choose the Y startpoint for the knight: \t&quot;;<br />
cin &gt;&gt; y;<br />
} while (y&lt;0||y&gt;4);</p>
<p>cout &lt;&lt; &quot;\nThe way of the knight will be shown\n&quot;;</p>
<p>springer(zug,x,y);<br />
char u;<br />
cin &gt;&gt; u;<br />
}</p>
<p>void springer(int zug, int x, int y)<br />
{</p>
<p>for(int i = 0; i&lt;5;i++)<br />
{<br />
for(int j = 0; j&lt;5;j++)<br />
{<br />
cout &lt;&lt; spielbrett[i][j] &lt;&lt; &quot; &quot;;<br />
}<br />
cout &lt;&lt; endl;<br />
}</p>
<p>cout &lt;&lt; endl;</p>
<p>if(zug&gt;0)<br />
{<br />
if((x-2)&gt;=0 &amp;&amp; (y-1)&gt;=0 &amp;&amp; spielbrett[x-2][y-1])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x-2,y-1);}</p>
<p>else if ((x+2)&lt;=4 &amp;&amp; (y-1)&gt;=0 &amp;&amp; spielbrett[x+2][y-1])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x+2,y-1);}</p>
<p>else if ((x+1)&lt;=4 &amp;&amp; (y-2)&gt;=0 &amp;&amp; spielbrett[x+1][y-2])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x+1,y-2);}</p>
<p>else if ((x-1)&gt;=0 &amp;&amp; (y-2)&gt;=0 &amp;&amp; spielbrett[x-1][y-2])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x-1,y-2);}</p>
<p>else if ((x-2)&gt;=0 &amp;&amp; (y+1)&lt;=4 &amp;&amp; spielbrett[x-2][y+1])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x-2,y+1);}</p>
<p>else if ((x+2)&lt;=4 &amp;&amp; (y+1)&lt;=4 &amp;&amp; spielbrett[x+2][y+1])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x+2,y+1);}</p>
<p>else if ((x-1)&gt;=0 &amp;&amp; (y+2)&lt;=4 &amp;&amp; spielbrett[x-1][y+2])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x-1,y+2);}</p>
<p>else if ((x+1)&lt;=4 &amp;&amp; (y+2)&lt;=4 &amp;&amp; spielbrett[x+1][y+2])<br />
{ spielbrett[x][y] = false;<br />
springer(zug-1,x+1,y+2);}<br />
}<br />
else<br />
cout &lt;&lt; &quot;Eine Lösung wurde gefunden&quot;;</p>
<p>}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171075</guid><dc:creator><![CDATA[sigint]]></dc:creator><pubDate>Wed, 08 Nov 2006 13:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to springerproblem on Wed, 08 Nov 2006 13:23:29 GMT]]></title><description><![CDATA[<p>Erstens: sfds</p>
<p>Zweitens: Wo genau liegt dein Problem? Compilerfehler? Falsche Ausgaben? Gar keine Ausgaben?</p>
<p>Drittens: Dir ist hoffentlich klar, daß du auf einem 5*5 Feld nur 24 Schritte gehen kannst, bis du jedes Feld einmal besetzt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171083</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 08 Nov 2006 13:23:29 GMT</pubDate></item><item><title><![CDATA[Reply to springerproblem on Wed, 08 Nov 2006 14:06:26 GMT]]></title><description><![CDATA[<p>ok, danke so siehts besser aus. <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>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iomanip&gt;

using namespace std;

void springer(int, int, int);

bool spielbrett [5][5];
int weg [5][5];
int zug = 25;
int x;
int y;

void main()
{

	for(int i = 0; i&lt;5; i++)
	{
		for(int j = 0; j&lt;5;j++)
		{
			spielbrett[i][j] = true;
		}
	}

	for(int i = 0; i&lt;5;i++)
	{
		for(int j = 0; j&lt;5;j++)
		{
			cout &lt;&lt; spielbrett[i][j] &lt;&lt; &quot; &quot;;
		}
		cout &lt;&lt; endl;
	}

	cout &lt;&lt; &quot;\t THE KNIGHT'S TOUR \n\n&quot;;
	do
	{ cout &lt;&lt; &quot;Please choose the X startpoint for the knight: \t&quot;;
	  cin &gt;&gt; x;
	} while(x&lt;0||x&gt;4);

	do
	{ cout &lt;&lt; &quot;Please choose the Y startpoint for the knight: \t&quot;;
	  cin &gt;&gt; y;
	} while (y&lt;0||y&gt;4);

	cout &lt;&lt; &quot;\nThe way of the knight will be shown\n&quot;;

	springer(zug,x,y);
	char u;
	cin &gt;&gt; u;
}

void springer(int zug, int x, int y)
{

	for(int i = 0; i&lt;5;i++)
	{
		for(int j = 0; j&lt;5;j++)
		{
			cout &lt;&lt; spielbrett[i][j] &lt;&lt; &quot; &quot;;
		}
		cout &lt;&lt; endl;
	}

	cout &lt;&lt; endl;

	if(zug&gt;0)
	{
	if((x-2)&gt;=0 &amp;&amp; (y-1)&gt;=0 &amp;&amp; spielbrett[x-2][y-1])
	{ spielbrett[x][y] = false;	
	  springer(zug-1,x-2,y-1);}

	else if ((x+2)&lt;=4 &amp;&amp; (y-1)&gt;=0 &amp;&amp; spielbrett[x+2][y-1])
	{ spielbrett[x][y] = false;	
	  springer(zug-1,x+2,y-1);}

	else if ((x+1)&lt;=4 &amp;&amp; (y-2)&gt;=0 &amp;&amp; spielbrett[x+1][y-2])
	{ spielbrett[x][y] = false;	
	  springer(zug-1,x+1,y-2);}

	else if ((x-1)&gt;=0 &amp;&amp; (y-2)&gt;=0 &amp;&amp; spielbrett[x-1][y-2])
	{ spielbrett[x][y] = false;	
	  springer(zug-1,x-1,y-2);}

	else if ((x-2)&gt;=0 &amp;&amp; (y+1)&lt;=4 &amp;&amp; spielbrett[x-2][y+1])
	{ spielbrett[x][y] = false;	
	  springer(zug-1,x-2,y+1);}

	else if ((x+2)&lt;=4 &amp;&amp; (y+1)&lt;=4 &amp;&amp; spielbrett[x+2][y+1])
	{ spielbrett[x][y] = false;	
	  springer(zug-1,x+2,y+1);}

	else if ((x-1)&gt;=0 &amp;&amp; (y+2)&lt;=4 &amp;&amp; spielbrett[x-1][y+2])
	{ spielbrett[x][y] = false;	
	  springer(zug-1,x-1,y+2);}

	else if ((x+1)&lt;=4 &amp;&amp; (y+2)&lt;=4 &amp;&amp; spielbrett[x+1][y+2])
	{ spielbrett[x][y] = false;	
	  springer(zug-1,x+1,y+2);}
	}
	else
	cout &lt;&lt; &quot;Eine Lösung wurde gefunden&quot;;

}
</code></pre>
<p>mein problem liegt in der rekursion. er springt bis zu einem gewissen punkt, bei welchem er nicht mehr weiterkommt. über backtracking sollte ich zum vorletzten aufruf zurückkehren und einen alternativen sprung machen. funktioniert aber nich so ganz. bei der ausgabe zeigt er mir, bis zu welchem sprung er geht und dann nicht mehr weiterkommt. logischerweise verläuft er sich dann und bringt mir einen stackoverflow.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171131</guid><dc:creator><![CDATA[sigint]]></dc:creator><pubDate>Wed, 08 Nov 2006 14:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to springerproblem on Thu, 09 Nov 2006 07:32:20 GMT]]></title><description><![CDATA[<p>Eventuell solltest du beim zurückspringen auch wieder die Änderungen umkehren, die du auf dem Vorwärtswegs ausgeführt aus (insbesondere die Feldelemente zurücksetzen auf true). Und außerdem solltest du mal überprüfen, ob du noch im Inneren des Spielfeldes bist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171544</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 09 Nov 2006 07:32:20 GMT</pubDate></item></channel></rss>