<?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[Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem]]></title><description><![CDATA[<p>Mein Sudoku-Enträtseler funzt nicht!?</p>
<p>Hier der Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;ctime&gt;

using namespace std;

int zahlen[81];
int quadrat[9][9];
int zeilen[9][9];
int spalten[9][9];
int ablage[81];

void FillRaster();
void Nochmal();
int ArrMinIndex(int *arr,int ugrenze,int ogrenze)
{
	int min_index = ugrenze;
	for(int i =ugrenze+1; i&lt;=ogrenze;i++)
	{
		if(arr[i] &lt; arr[min_index])
		{
			min_index = i;
		}
	}
	return min_index;
}

void sortiereArr(int *arr,int elemente)
{
	int ablage;
	for(int i=0;i&lt;elemente;i++)
	{
		ablage = arr[ArrMinIndex(arr, i, elemente -1)];
		arr[ArrMinIndex(arr,i,elemente -1)]= arr[i];
		arr[i] = ablage;
	}
}

int doppelte(int *arr, int elemente)
{
	sortiereArr(arr,elemente);
	for (int i= 0; i&lt;elemente - 1; i++)
	{
		if (arr[i] == arr[i+1])
			return 1;
	}
	return 0;
}

void ResetZahlen()
{
	for (int i= 0; i&lt;81;i++)
	{
		zahlen[i]=0;

	}
}
void RasterFullen()
{
	for (int i=0;i&lt;81;i++)
	{
		zahlen[i]=i;
	}
}
void ZeigeZahlen()
{
	system(&quot;cls&quot;);
	for (int i=0;i&lt;81;i++)
	{
		if(i%9==0)
			cout&lt;&lt;endl;
		if(i%27==0)
			cout&lt;&lt;endl;
		if (i%3==0)
			cout&lt;&lt;&quot; &quot;;
		cout&lt;&lt;zahlen[i];
	}
}
void OrdneQuadrate()
{
	quadrat[0][0]=zahlen[0];
	quadrat[0][1]=zahlen[1];
	quadrat[0][2]=zahlen[2];

	quadrat[0][3]=zahlen[9];
	quadrat[0][4]=zahlen[10];
	quadrat[0][5]=zahlen[11];

	quadrat[0][6]=zahlen[18];
	quadrat[0][7]=zahlen[19];
	quadrat[0][8]=zahlen[20];
//////////////////////////////
	quadrat[1][0]=zahlen[3];
	quadrat[1][1]=zahlen[4];
	quadrat[1][2]=zahlen[5];

	quadrat[1][3]=zahlen[12];
	quadrat[1][4]=zahlen[13];
	quadrat[1][5]=zahlen[14];

	quadrat[1][6]=zahlen[21];
	quadrat[1][7]=zahlen[22];
	quadrat[1][8]=zahlen[23];
//////////////////////////////
	quadrat[2][0]=zahlen[6];
	quadrat[2][1]=zahlen[7];
	quadrat[2][2]=zahlen[8];

	quadrat[2][3]=zahlen[15];
	quadrat[2][4]=zahlen[16];
	quadrat[2][5]=zahlen[17];

	quadrat[2][6]=zahlen[24];
	quadrat[2][7]=zahlen[25];
	quadrat[2][8]=zahlen[26];
////////////////////////////////
	quadrat[3][0]=zahlen[27];
	quadrat[3][1]=zahlen[28];
	quadrat[3][2]=zahlen[29];

	quadrat[3][3]=zahlen[36];
	quadrat[3][4]=zahlen[37];
	quadrat[3][5]=zahlen[38];

	quadrat[3][6]=zahlen[45];
	quadrat[3][7]=zahlen[46];
	quadrat[3][8]=zahlen[47];
///////////////////////////////
	quadrat[4][0]=zahlen[30];
	quadrat[4][1]=zahlen[31];
	quadrat[4][2]=zahlen[32];

	quadrat[4][3]=zahlen[39];
	quadrat[4][4]=zahlen[40];
	quadrat[4][5]=zahlen[41];

	quadrat[4][6]=zahlen[48];
	quadrat[4][7]=zahlen[49];
	quadrat[4][8]=zahlen[50];
/////////////////////////////////
	quadrat[5][0]=zahlen[33];
	quadrat[5][1]=zahlen[34];
	quadrat[5][2]=zahlen[35];

	quadrat[5][3]=zahlen[42];
	quadrat[5][4]=zahlen[43];
	quadrat[5][5]=zahlen[44];

	quadrat[5][6]=zahlen[51];
	quadrat[5][7]=zahlen[52];
	quadrat[5][8]=zahlen[53];
/////////////////////////////////
	quadrat[6][0]=zahlen[54];
	quadrat[6][1]=zahlen[55];
	quadrat[6][2]=zahlen[56];
	quadrat[6][3]=zahlen[63];
	quadrat[6][4]=zahlen[64];
	quadrat[6][5]=zahlen[65];
	quadrat[6][6]=zahlen[72];
	quadrat[6][7]=zahlen[73];
	quadrat[6][8]=zahlen[74];
/////////////////////////////////
	quadrat[7][0]=zahlen[57];
	quadrat[7][0]=zahlen[58];
	quadrat[7][0]=zahlen[59];

	quadrat[7][0]=zahlen[66];
	quadrat[7][0]=zahlen[67];
	quadrat[7][0]=zahlen[68];

	quadrat[7][0]=zahlen[75];
	quadrat[7][0]=zahlen[76];
	quadrat[7][0]=zahlen[77];
//////////////////////////////////
	quadrat[8][0]=zahlen[60];
	quadrat[8][1]=zahlen[61];
	quadrat[8][2]=zahlen[62];

	quadrat[8][3]=zahlen[69];
	quadrat[8][4]=zahlen[70];
	quadrat[8][5]=zahlen[71];

	quadrat[8][6]=zahlen[78];
	quadrat[8][7]=zahlen[79];
	quadrat[8][8]=zahlen[80];

}

int GleicheZahlenQuadrat()
{
	for(int i=0;i&lt;9;i++)
	{
		if (doppelte(quadrat[i],9)==1)
			return 1;
	}
	return 0;
}

void OrdneZeilen()
{
	int b=0;
	for(int i= 0;i&lt;9;i++)
		for(int z=0;z&lt;9;z++)
		{
			zeilen[i][z]=zahlen[b];
			b++;
		}
}

int GleicheZahlenZeile()
{
	for(int i=0;i&lt;9;i++)
	{
		if (doppelte(zeilen[i],9)==1)
			return 1;
	}
	return 0;
}

void OrdneSpalten()
{
	int b=0;
	for(int i=0;i&lt;9;i++)
		b=i;
		for(int z=0;z&lt;9;z++)
		{
			spalten[i][z]=zahlen[b];
			b=b+9;
		}
}

int GleicheZahlenSpalte()
{
	for(int i=0;i&lt;9;i++)
	{
		if (doppelte(spalten[i],9)==1)
			return 1;
	}
	return 0;
}

int GleicheZahlen()
{
	if (GleicheZahlenQuadrat()==1)
		return 1;
	if (GleicheZahlenSpalte()==1)
		return 1;
	if (GleicheZahlenZeile()==1)
		return 1;
	return 0;
}

void ZahlenEingeben()
{
	int eingabe;
	for (int i=0;i&lt;81;i++)
	{
		cin&gt;&gt;eingabe;
		ablage[i]=eingabe;
		zahlen[i]=eingabe;
		ZeigeZahlen();
	}
}

void Nochmal()
{
	ResetZahlen();
	for(int i=0;i&lt;81;i++)
	{
		zahlen[i]=ablage[i];
	}
	FillRaster();
}

void FillRaster()
{
	srand(time(NULL));

	for(int i=0;i&lt;81;i++)
	{
		if(zahlen[i]==0)
		{
			zahlen[i]=(rand()%9)+1;
		}

	}
	if(GleicheZahlen()==1)
		{
			Nochmal();
		}
}

int main()
{
	ResetZahlen();
	ZeigeZahlen();
	ZahlenEingeben();
	FillRaster();

	ZeigeZahlen();

	return 0;
}
</code></pre>
<p>Das Programm sagt weniger aus als der Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/126866/sudoku-enträtseler-arbeitet-nicht-ordentlich-probiert-ihn-mal-aus-riesen-problem</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 13:28:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126866.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 Nov 2005 12:41:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 19 Nov 2005 12:41:05 GMT]]></title><description><![CDATA[<p>Mein Sudoku-Enträtseler funzt nicht!?</p>
<p>Hier der Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;ctime&gt;

using namespace std;

int zahlen[81];
int quadrat[9][9];
int zeilen[9][9];
int spalten[9][9];
int ablage[81];

void FillRaster();
void Nochmal();
int ArrMinIndex(int *arr,int ugrenze,int ogrenze)
{
	int min_index = ugrenze;
	for(int i =ugrenze+1; i&lt;=ogrenze;i++)
	{
		if(arr[i] &lt; arr[min_index])
		{
			min_index = i;
		}
	}
	return min_index;
}

void sortiereArr(int *arr,int elemente)
{
	int ablage;
	for(int i=0;i&lt;elemente;i++)
	{
		ablage = arr[ArrMinIndex(arr, i, elemente -1)];
		arr[ArrMinIndex(arr,i,elemente -1)]= arr[i];
		arr[i] = ablage;
	}
}

int doppelte(int *arr, int elemente)
{
	sortiereArr(arr,elemente);
	for (int i= 0; i&lt;elemente - 1; i++)
	{
		if (arr[i] == arr[i+1])
			return 1;
	}
	return 0;
}

void ResetZahlen()
{
	for (int i= 0; i&lt;81;i++)
	{
		zahlen[i]=0;

	}
}
void RasterFullen()
{
	for (int i=0;i&lt;81;i++)
	{
		zahlen[i]=i;
	}
}
void ZeigeZahlen()
{
	system(&quot;cls&quot;);
	for (int i=0;i&lt;81;i++)
	{
		if(i%9==0)
			cout&lt;&lt;endl;
		if(i%27==0)
			cout&lt;&lt;endl;
		if (i%3==0)
			cout&lt;&lt;&quot; &quot;;
		cout&lt;&lt;zahlen[i];
	}
}
void OrdneQuadrate()
{
	quadrat[0][0]=zahlen[0];
	quadrat[0][1]=zahlen[1];
	quadrat[0][2]=zahlen[2];

	quadrat[0][3]=zahlen[9];
	quadrat[0][4]=zahlen[10];
	quadrat[0][5]=zahlen[11];

	quadrat[0][6]=zahlen[18];
	quadrat[0][7]=zahlen[19];
	quadrat[0][8]=zahlen[20];
//////////////////////////////
	quadrat[1][0]=zahlen[3];
	quadrat[1][1]=zahlen[4];
	quadrat[1][2]=zahlen[5];

	quadrat[1][3]=zahlen[12];
	quadrat[1][4]=zahlen[13];
	quadrat[1][5]=zahlen[14];

	quadrat[1][6]=zahlen[21];
	quadrat[1][7]=zahlen[22];
	quadrat[1][8]=zahlen[23];
//////////////////////////////
	quadrat[2][0]=zahlen[6];
	quadrat[2][1]=zahlen[7];
	quadrat[2][2]=zahlen[8];

	quadrat[2][3]=zahlen[15];
	quadrat[2][4]=zahlen[16];
	quadrat[2][5]=zahlen[17];

	quadrat[2][6]=zahlen[24];
	quadrat[2][7]=zahlen[25];
	quadrat[2][8]=zahlen[26];
////////////////////////////////
	quadrat[3][0]=zahlen[27];
	quadrat[3][1]=zahlen[28];
	quadrat[3][2]=zahlen[29];

	quadrat[3][3]=zahlen[36];
	quadrat[3][4]=zahlen[37];
	quadrat[3][5]=zahlen[38];

	quadrat[3][6]=zahlen[45];
	quadrat[3][7]=zahlen[46];
	quadrat[3][8]=zahlen[47];
///////////////////////////////
	quadrat[4][0]=zahlen[30];
	quadrat[4][1]=zahlen[31];
	quadrat[4][2]=zahlen[32];

	quadrat[4][3]=zahlen[39];
	quadrat[4][4]=zahlen[40];
	quadrat[4][5]=zahlen[41];

	quadrat[4][6]=zahlen[48];
	quadrat[4][7]=zahlen[49];
	quadrat[4][8]=zahlen[50];
/////////////////////////////////
	quadrat[5][0]=zahlen[33];
	quadrat[5][1]=zahlen[34];
	quadrat[5][2]=zahlen[35];

	quadrat[5][3]=zahlen[42];
	quadrat[5][4]=zahlen[43];
	quadrat[5][5]=zahlen[44];

	quadrat[5][6]=zahlen[51];
	quadrat[5][7]=zahlen[52];
	quadrat[5][8]=zahlen[53];
/////////////////////////////////
	quadrat[6][0]=zahlen[54];
	quadrat[6][1]=zahlen[55];
	quadrat[6][2]=zahlen[56];
	quadrat[6][3]=zahlen[63];
	quadrat[6][4]=zahlen[64];
	quadrat[6][5]=zahlen[65];
	quadrat[6][6]=zahlen[72];
	quadrat[6][7]=zahlen[73];
	quadrat[6][8]=zahlen[74];
/////////////////////////////////
	quadrat[7][0]=zahlen[57];
	quadrat[7][0]=zahlen[58];
	quadrat[7][0]=zahlen[59];

	quadrat[7][0]=zahlen[66];
	quadrat[7][0]=zahlen[67];
	quadrat[7][0]=zahlen[68];

	quadrat[7][0]=zahlen[75];
	quadrat[7][0]=zahlen[76];
	quadrat[7][0]=zahlen[77];
//////////////////////////////////
	quadrat[8][0]=zahlen[60];
	quadrat[8][1]=zahlen[61];
	quadrat[8][2]=zahlen[62];

	quadrat[8][3]=zahlen[69];
	quadrat[8][4]=zahlen[70];
	quadrat[8][5]=zahlen[71];

	quadrat[8][6]=zahlen[78];
	quadrat[8][7]=zahlen[79];
	quadrat[8][8]=zahlen[80];

}

int GleicheZahlenQuadrat()
{
	for(int i=0;i&lt;9;i++)
	{
		if (doppelte(quadrat[i],9)==1)
			return 1;
	}
	return 0;
}

void OrdneZeilen()
{
	int b=0;
	for(int i= 0;i&lt;9;i++)
		for(int z=0;z&lt;9;z++)
		{
			zeilen[i][z]=zahlen[b];
			b++;
		}
}

int GleicheZahlenZeile()
{
	for(int i=0;i&lt;9;i++)
	{
		if (doppelte(zeilen[i],9)==1)
			return 1;
	}
	return 0;
}

void OrdneSpalten()
{
	int b=0;
	for(int i=0;i&lt;9;i++)
		b=i;
		for(int z=0;z&lt;9;z++)
		{
			spalten[i][z]=zahlen[b];
			b=b+9;
		}
}

int GleicheZahlenSpalte()
{
	for(int i=0;i&lt;9;i++)
	{
		if (doppelte(spalten[i],9)==1)
			return 1;
	}
	return 0;
}

int GleicheZahlen()
{
	if (GleicheZahlenQuadrat()==1)
		return 1;
	if (GleicheZahlenSpalte()==1)
		return 1;
	if (GleicheZahlenZeile()==1)
		return 1;
	return 0;
}

void ZahlenEingeben()
{
	int eingabe;
	for (int i=0;i&lt;81;i++)
	{
		cin&gt;&gt;eingabe;
		ablage[i]=eingabe;
		zahlen[i]=eingabe;
		ZeigeZahlen();
	}
}

void Nochmal()
{
	ResetZahlen();
	for(int i=0;i&lt;81;i++)
	{
		zahlen[i]=ablage[i];
	}
	FillRaster();
}

void FillRaster()
{
	srand(time(NULL));

	for(int i=0;i&lt;81;i++)
	{
		if(zahlen[i]==0)
		{
			zahlen[i]=(rand()%9)+1;
		}

	}
	if(GleicheZahlen()==1)
		{
			Nochmal();
		}
}

int main()
{
	ResetZahlen();
	ZeigeZahlen();
	ZahlenEingeben();
	FillRaster();

	ZeigeZahlen();

	return 0;
}
</code></pre>
<p>Das Programm sagt weniger aus als der Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/921336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/921336</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Sat, 19 Nov 2005 12:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 19 Nov 2005 13:04:45 GMT]]></title><description><![CDATA[<p>Was genau funktioniert daran denn nicht? Liefert er falsche Lösungen? Wenn ja, was für welche?<br />
*geht das gesamte Programm durch*</p>
<p>ResetZahlen -&gt; setzt alle Zahlenfelder auf 0<br />
ZeigeZahlen -&gt; Ausgabe des Feldes<br />
ZahlenEingeben -&gt; füllt Zahlenfeld und Ablage<br />
* 1. in welcher Form gibst du die Zahlen ein<br />
* 2. nach jeder Eingabe wird das gesamte Feld neu gezeichnet, ist das richtig?<br />
* 3. du hast keine Prüfung, ob die Eingabe im richtigen Intervall liegt<br />
FillRaster -&gt; füllt verbleibendes Zahlenfeld mit Zufallswerten<br />
* 1. pack' das srand() besser an den Anfang von main<br />
* 2. ich würde statt des rekursiven Aufrufs eine Schleife verwenden:</p>
<pre><code class="language-cpp">while(true)
{
  for(i) if(zahlen[i]==0) zahlen[i]=random;
  if(gleicheZahlen()==0) break;
  ResetZahlen();
  for(i) zahlen[i]=ablage[i];
}
</code></pre>
<p>Außerdem solltest du die OrdneXXX() Funktionen auch aufrufen, bevor du die die entsprechenden Datenfelder überprüfst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/921358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/921358</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 19 Nov 2005 13:04:45 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 19 Nov 2005 13:25:04 GMT]]></title><description><![CDATA[<p>Ganz abgesehen davon hat es wenig mit Win32 zu tun...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/921379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/921379</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 19 Nov 2005 13:25:04 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 19 Nov 2005 18:12:39 GMT]]></title><description><![CDATA[<blockquote>
<p>Außerdem solltest du die OrdneXXX() Funktionen auch aufrufen, bevor du die die entsprechenden Datenfelder überprüfst.</p>
</blockquote>
<p>Das hab ich vergessen!<br />
Ps: Das Teil ist sehr wohl in 32 Bit geschrieben!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/921614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/921614</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Sat, 19 Nov 2005 18:12:39 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 19 Nov 2005 18:22:05 GMT]]></title><description><![CDATA[<pre><code>003 502 900
 060 000 040
 910 000 082

 001 865 700
 000 000 000
 008 924 100

 780 000 013
 090 000 050
 005 307 400
</code></pre>
<pre><code class="language-cpp">int main()
{
    OrdneZeilen();OrdneQuadrate();OrdneSpalten();
    ResetZahlen();
    ZeigeZahlen();
    ZahlenEingeben();
    FillRaster();

    ZeigeZahlen();

    return 0;
}
</code></pre>
<p>nachdem ich alles eingegeben habe, sollte er eigentlich für die Nullen Zufallszahlen einsetzen und dies solange wiederholen bis keine gleichen Zahlen in den Quadraten,Zeilen und/oder Spalten sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/921620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/921620</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Sat, 19 Nov 2005 18:22:05 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 19 Nov 2005 19:15:24 GMT]]></title><description><![CDATA[<p>hier der überarbeitete Code</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;ctime&gt;
#include &quot;ic.h&quot;
using namespace std;

int zahlen[81];
int quadrat[9][9];
int zeilen[9][9];
int spalten[9][9];
int ablage[81];

void FillRaster();
void Nochmal();
int ArrMinIndex(int *arr,int ugrenze,int ogrenze)
{
	int min_index = ugrenze;
	for(int i =ugrenze+1; i&lt;=ogrenze;i++)
	{
		if(arr[i] &lt; arr[min_index])
		{
			min_index = i;
		}
	}
	return min_index;
}

void sortiereArr(int *arr,int elemente)
{
	int ablage;
	for(int i=0;i&lt;elemente;i++)
	{
		ablage = arr[ArrMinIndex(arr, i, elemente -1)];
		arr[ArrMinIndex(arr,i,elemente -1)]= arr[i];
		arr[i] = ablage;
	}
}

int doppelte(int *arr, int elemente)
{
	sortiereArr(arr,elemente);
	for (int i= 0; i&lt;elemente - 1; i++)
	{
		if (arr[i] == arr[i+1])
			return 1;
	}
	return 0;
}

void ResetZahlen()
{
	for (int i= 0; i&lt;81;i++)
	{
		zahlen[i]=0;

	}
}
void RasterFullen()
{
	for (int i=0;i&lt;81;i++)
	{
		zahlen[i]=i;
	}
}
void ZeigeZahlen()
{
	system(&quot;cls&quot;);
	for (int i=0;i&lt;81;i++)
	{
		if(i%9==0)
			cout&lt;&lt;endl;
		if(i%27==0)
			cout&lt;&lt;endl;
		if (i%3==0)
			cout&lt;&lt;&quot; &quot;;
		cout&lt;&lt;zahlen[i];
	}
}
void OrdneQuadrate()
{
	quadrat[0][0]=zahlen[0];
	quadrat[0][1]=zahlen[1];
	quadrat[0][2]=zahlen[2];

	quadrat[0][3]=zahlen[9];
	quadrat[0][4]=zahlen[10];
	quadrat[0][5]=zahlen[11];

	quadrat[0][6]=zahlen[18];
	quadrat[0][7]=zahlen[19];
	quadrat[0][8]=zahlen[20];
//////////////////////////////
	quadrat[1][0]=zahlen[3];
	quadrat[1][1]=zahlen[4];
	quadrat[1][2]=zahlen[5];

	quadrat[1][3]=zahlen[12];
	quadrat[1][4]=zahlen[13];
	quadrat[1][5]=zahlen[14];

	quadrat[1][6]=zahlen[21];
	quadrat[1][7]=zahlen[22];
	quadrat[1][8]=zahlen[23];
//////////////////////////////
	quadrat[2][0]=zahlen[6];
	quadrat[2][1]=zahlen[7];
	quadrat[2][2]=zahlen[8];

	quadrat[2][3]=zahlen[15];
	quadrat[2][4]=zahlen[16];
	quadrat[2][5]=zahlen[17];

	quadrat[2][6]=zahlen[24];
	quadrat[2][7]=zahlen[25];
	quadrat[2][8]=zahlen[26];
////////////////////////////////
	quadrat[3][0]=zahlen[27];
	quadrat[3][1]=zahlen[28];
	quadrat[3][2]=zahlen[29];

	quadrat[3][3]=zahlen[36];
	quadrat[3][4]=zahlen[37];
	quadrat[3][5]=zahlen[38];

	quadrat[3][6]=zahlen[45];
	quadrat[3][7]=zahlen[46];
	quadrat[3][8]=zahlen[47];
///////////////////////////////
	quadrat[4][0]=zahlen[30];
	quadrat[4][1]=zahlen[31];
	quadrat[4][2]=zahlen[32];

	quadrat[4][3]=zahlen[39];
	quadrat[4][4]=zahlen[40];
	quadrat[4][5]=zahlen[41];

	quadrat[4][6]=zahlen[48];
	quadrat[4][7]=zahlen[49];
	quadrat[4][8]=zahlen[50];
/////////////////////////////////
	quadrat[5][0]=zahlen[33];
	quadrat[5][1]=zahlen[34];
	quadrat[5][2]=zahlen[35];

	quadrat[5][3]=zahlen[42];
	quadrat[5][4]=zahlen[43];
	quadrat[5][5]=zahlen[44];

	quadrat[5][6]=zahlen[51];
	quadrat[5][7]=zahlen[52];
	quadrat[5][8]=zahlen[53];
/////////////////////////////////
	quadrat[6][0]=zahlen[54];
	quadrat[6][1]=zahlen[55];
	quadrat[6][2]=zahlen[56];
	quadrat[6][3]=zahlen[63];
	quadrat[6][4]=zahlen[64];
	quadrat[6][5]=zahlen[65];
	quadrat[6][6]=zahlen[72];
	quadrat[6][7]=zahlen[73];
	quadrat[6][8]=zahlen[74];
/////////////////////////////////
	quadrat[7][0]=zahlen[57];
	quadrat[7][0]=zahlen[58];
	quadrat[7][0]=zahlen[59];

	quadrat[7][0]=zahlen[66];
	quadrat[7][0]=zahlen[67];
	quadrat[7][0]=zahlen[68];

	quadrat[7][0]=zahlen[75];
	quadrat[7][0]=zahlen[76];
	quadrat[7][0]=zahlen[77];
//////////////////////////////////
	quadrat[8][0]=zahlen[60];
	quadrat[8][1]=zahlen[61];
	quadrat[8][2]=zahlen[62];

	quadrat[8][3]=zahlen[69];
	quadrat[8][4]=zahlen[70];
	quadrat[8][5]=zahlen[71];

	quadrat[8][6]=zahlen[78];
	quadrat[8][7]=zahlen[79];
	quadrat[8][8]=zahlen[80];

}

int GleicheZahlenQuadrat()
{
	for(int i=0;i&lt;9;i++)
	{
		if (doppelte(quadrat[i],9)==1)
			return 1;
	}
	return 0;
}

void OrdneZeilen()
{
	int b=0;
	for(int i= 0;i&lt;9;i++)
		for(int z=0;z&lt;9;z++)
		{
			zeilen[i][z]=zahlen[b];
			b++;
		}
}

int GleicheZahlenZeile()
{
	for(int i=0;i&lt;9;i++)
	{
		if (doppelte(zeilen[i],9)==1)
			return 1;
	}
	return 0;
}

void OrdneSpalten()
{
	int b=0;
	for(int i=0;i&lt;9;i++)
		b=i;
		for(int z=0;z&lt;9;z++)
		{
			spalten[i][z]=zahlen[b];
			b=b+9;
		}
}

int GleicheZahlenSpalte()
{
	for(int i=0;i&lt;9;i++)
	{
		if (doppelte(spalten[i],9)==1)
			return 1;
	}
	return 0;
}

int GleicheZahlen()
{
	if (GleicheZahlenQuadrat()==1)
		return 1;
	if (GleicheZahlenSpalte()==1)
		return 1;
	if (GleicheZahlenZeile()==1)
		return 1;
	return 0;
}

void ZahlenEingeben()
{
	int eingabe;
	for (int i=0;i&lt;81;i++)
	{
		cin&gt;&gt;eingabe;
		ablage[i]=eingabe;
		zahlen[i]=eingabe;
		ZeigeZahlen();
	}
}
void Nochmal()
{
	ResetZahlen();
	for(int i=0;i&lt;81;i++)
	{
		zahlen[i]=ablage[i];
	}
	FillRaster();
}

void FillRaster()
{

	for(int i=0;i&lt;81;i++)
	{
		if(zahlen[i]==0)
		{
			zahlen[i]=(rand()%9)+1;
			ZeigeZahlen();
		}

	}
	if(GleicheZahlen()==1)
		{
			Nochmal();
		}
}

int main()
{
	srand(time(NULL));
	ResetZahlen();
	ZeigeZahlen();
	ZahlenEingeben();
	OrdneZeilen();
	OrdneQuadrate();
	OrdneSpalten();
	FillRaster();

	ZeigeZahlen();

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/921657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/921657</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Sat, 19 Nov 2005 19:15:24 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Mon, 21 Nov 2005 08:21:17 GMT]]></title><description><![CDATA[<p>Du mußt die Zahlen natürlich nach jedem Ratevorgang neu in die Spalten, Zeilen und Blöcke einsortieren - sonst prüfst du immer auf den selben Werten (und noch dazu auf lauter Null-Werten von der Initialisierung), ob du doppelte Werte hast.</p>
<p>PS: Es gibt bestimmt schnellere Möglichkeiten, ein Sudoku zu lösen, als per Zufall alle Möglichkeiten auszutesten <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/923024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/923024</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 21 Nov 2005 08:21:17 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Mon, 21 Nov 2005 13:02:09 GMT]]></title><description><![CDATA[<p>also beim enträtseln per zufall 81 richtige - das ist wohl nicht<br />
ganz der richtige ansatz.<br />
selbst wenn das programm frei irgendeine lösung finden sollte -<br />
wird es wahrscheinlich auf kurz <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="🙂"
    /> oder lang <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="😞"
    /><br />
soll das teil frei ein sodoku entwerfen: 9er-gruppe - 8x rand die 9te<br />
ist dann wohl logisch oder? dann um andere 9er-gruppe erweitern.<br />
ich bin nicht mehr so fit in logik-rechnen, aber für die lösung<br />
sollte man etwa nach dem schema vorgehen, wenn die spalten, die zeilen<br />
oder die neuner-quadrate nur eine lösung zulassen wird dies notiert<br />
und dann erst die nächste zahl angehen.</p>
<p>kann ja bei so einem teil nicht ganz sein das meine verrosteten grauen<br />
zellen schneller sind als der pc. da muss an dem programm wohl noch<br />
einiges getuned werden. <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>
<p>und: void OrdneQuadrate() läst sich wohl auch noch optimieren.</p>
<p>mfg f.-th.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/923251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/923251</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Mon, 21 Nov 2005 13:02:09 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Mon, 21 Nov 2005 17:26:09 GMT]]></title><description><![CDATA[<p>...das Programm doch eher etwas länger brauchen wird, wieviele möglichkeiten es gibt kannst du dir ja selber ausrechnen:</p>
<p>51 Zahlen werden in 51 Kästchen verteilt, das heißt es gibt genau 51! ~= 1,551 x 10^66 Möglichkeiten die Zahlen zu verteilen...</p>
<p>Ich würde mal sagen, die Wahrscheinlichkeit, dass du in deinem Leben das Ergebnis noch mitbekommst, ist äußerst gering... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/923536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/923536</guid><dc:creator><![CDATA[ajo]]></dc:creator><pubDate>Mon, 21 Nov 2005 17:26:09 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Mon, 21 Nov 2005 20:03:43 GMT]]></title><description><![CDATA[<p>ok. ich gebe das projekt jetzt auf. wenn ihr wollt könnt ihr den Sudoku-Enträtseler noch tunen und von mir aus auch an Microsoft verkaufen. Ich möchte aber mindestens 10% Gewinnbeteiligung für die Ursprungsidee. Die ist doch genial. Stellt euch vor ihr könnt bei einem Sudoku-Gewinnspiel 99 Millionen gweinnen. Da müsst ihr nicht stundenlang rätseln, sondern einfach den Pc anschalten, Programm starten, 3 Jahre warten und dann steht den Millionen nichts mehr im weg. Gruß, Leon++!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/923744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/923744</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Mon, 21 Nov 2005 20:03:43 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Mon, 21 Nov 2005 20:52:04 GMT]]></title><description><![CDATA[<p>nicht 51 sondern 9 x 9 = 81 felder!<br />
nach 5 soduko brauch ich für leichte per graue zellen keine 1/4 stunde:<br />
für meiner ansicht nach nicht brauchbaren ansatz willst du prozente -<br />
dann biet ihn bei ebay an - da gibts vielleicht noch mehr. <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>
<p>mfg f.-th.</p>
<p>p.s. wer so schnell aufgibt für den ist programmieren eh nicht der<br />
richtige sport.<br />
faustzahl für profis (nach höhrensagen) 20 brauchbare codezeilen pro tag.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/923818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/923818</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Mon, 21 Nov 2005 20:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Mon, 21 Nov 2005 20:56:56 GMT]]></title><description><![CDATA[<p>f.-th. schrieb:</p>
<blockquote>
<p>faustzahl für profis (nach höhrensagen) 20 brauchbare codezeilen pro tag.</p>
</blockquote>
<p>Nach meinem hören-sagen waren es 5 (fünf)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/923823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/923823</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 21 Nov 2005 20:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Tue, 22 Nov 2005 08:03:38 GMT]]></title><description><![CDATA[<p>*g* drei Jahre ist aber eine seh optimistische Schätzung. Und ehe ich versuche, dieses Programm zu &quot;tunen&quot;, bastel' ich mir lieber ein intelligenteres Verfahren, um einen Sudoku zu lösen (am günstigsten ist es, iterativ nach &quot;sicheren&quot; Positionen zu suchen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924024</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 22 Nov 2005 08:03:38 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Tue, 22 Nov 2005 14:05:49 GMT]]></title><description><![CDATA[<p>na dann mach mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924367</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Tue, 22 Nov 2005 14:05:49 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Wed, 02 Nov 2011 08:53:29 GMT]]></title><description><![CDATA[<p>ich bin übrigens C++-Einsteiger, gerade mal 14 Jahre alt und habe deshalb nicht Zeit 20 Zeilen Code am Tag zu schreiben. Außerdem kotzt mich die scheiß Konsole an (deshalb die mangelnde Motivation). Ich habe versucht auf die WINAPI umzusteigen (zu schwer) und scheiterte ausserdem auch an wxWidgets (krieg ich nicht installed). Mein Vater erlaubt mir zudem auch nur 10 Std. Internet im Monat(obwohl ich die Kosten trage) und DSL (und Flatrate) ist bei mir nicht verfügbar(Glasfaser). Dies führt dazu, dass ich nicht wie andere Programmers stundenlang in der MSDN herumsurfen kann.</p>
<p>Ende, mfg, ****.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924381</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Wed, 02 Nov 2011 08:53:29 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Tue, 22 Nov 2005 14:16:47 GMT]]></title><description><![CDATA[<p>Ich empfehle Dir fang mit C# Express an, da kannst Du graphische Oberflächen sehr einfach und schön machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924385</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Tue, 22 Nov 2005 14:16:47 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Tue, 22 Nov 2005 14:56:49 GMT]]></title><description><![CDATA[<p>C# Express? Was ist das für ein Buch? C# ist doch was anderes als C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/924437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/924437</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Tue, 22 Nov 2005 14:56:49 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Thu, 24 Nov 2005 17:47:53 GMT]]></title><description><![CDATA[<p>f.-th. schrieb:</p>
<blockquote>
<p>nicht 51 sondern 9 x 9 = 81 felder!<br />
nach 5 soduko brauch ich für leichte per graue zellen keine 1/4 stunde:<br />
für meiner ansicht nach nicht brauchbaren ansatz willst du prozente -<br />
dann biet ihn bei ebay an - da gibts vielleicht noch mehr. <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>
<p>mfg f.-th.</p>
<p>p.s. wer so schnell aufgibt für den ist programmieren eh nicht der<br />
richtige sport.<br />
faustzahl für profis (nach höhrensagen) 20 brauchbare codezeilen pro tag.</p>
</blockquote>
<p>Falls du es nicht bemerkt haben solltest, 30 Zahlen stehen da schon drin... <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/926332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926332</guid><dc:creator><![CDATA[ajo]]></dc:creator><pubDate>Thu, 24 Nov 2005 17:47:53 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Thu, 24 Nov 2005 18:58:36 GMT]]></title><description><![CDATA[<p>und das berücksichigt sein programm ja nicht oder?</p>
<p>mfg f.-th.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/926396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926396</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Thu, 24 Nov 2005 18:58:36 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Thu, 24 Nov 2005 20:20:45 GMT]]></title><description><![CDATA[<p>f.-th. schrieb:</p>
<blockquote>
<p>und das berücksichigt sein programm ja nicht oder?</p>
<p>mfg f.-th.</p>
</blockquote>
<p>doch das tut es es werden nur zufallszahlen bei feldern mit dem wert 0 generiet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/926467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/926467</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Thu, 24 Nov 2005 20:20:45 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 26 Nov 2005 22:14:05 GMT]]></title><description><![CDATA[<p>ich glaube die linux-spezies haben quelltexte zu dem thema. ich weis<br />
allerdings nicht in welche programmiersprache, hab da irgendwas mit<br />
gnome und kde in erinnerung.</p>
<p>mfg f.-th.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/928044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/928044</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Sat, 26 Nov 2005 22:14:05 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Fri, 24 Feb 2006 23:14:41 GMT]]></title><description><![CDATA[<p>hab jetzt nach ner langen weile mal wieder vorbeigeschaut. Was ist nun draus geworden. Hat irgendeiner hier mal einen anderen sudokuenträtseler gebaut?</p>
<p>hab jetzt übrigens flatrate, welche ich mir per wlan von einem freifunknetz in berlin hole. Und das beste: mein Vater kriegt nichts davon ab. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> Haha. Ausserdem bin ich jetzt 15!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1002339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1002339</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Fri, 24 Feb 2006 23:14:41 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 25 Feb 2006 00:27:24 GMT]]></title><description><![CDATA[<p>Ein Studienkollege hat das hier produziert:<br />
<a href="http://twoday.tuwien.ac.at/alias/stories/8519/" rel="nofollow">http://twoday.tuwien.ac.at/alias/stories/8519/</a><br />
<a href="http://twoday.tuwien.ac.at/alias/stories/8545/" rel="nofollow">http://twoday.tuwien.ac.at/alias/stories/8545/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1002348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1002348</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Sat, 25 Feb 2006 00:27:24 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 25 Feb 2006 11:39:41 GMT]]></title><description><![CDATA[<p>is leider python. da kenn ich mich nicht aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1002470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1002470</guid><dc:creator><![CDATA[Leon++]]></dc:creator><pubDate>Sat, 25 Feb 2006 11:39:41 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 25 Feb 2006 15:17:44 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=2822" rel="nofollow">SideWinder</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=13" rel="nofollow">DOS und Win32-Konsole</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1002646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1002646</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sat, 25 Feb 2006 15:17:44 GMT</pubDate></item><item><title><![CDATA[Reply to Sudoku-Enträtseler arbeitet nicht ordentlich (probiert ihn mal aus)-riesen Problem on Sat, 25 Feb 2006 21:18:48 GMT]]></title><description><![CDATA[<p>Ich habe um Weihnachten/Silvester rum mal an einem &quot;Sudoku-SOlver&quot; gearbeitet. Der klappt auch ganz gut, allerdings kann er nicht ALLE Rätsel lösen, sondern nur die, die nicht ganz abnormal schwer sind. Ich habe zu Weihnachten so eine Sudoku-Sammlung mit 100 Rätseln gekriegt und bis ca. 70 konnte er sie noch lösen. Ich habe mal im Internet nach anderen Online-Lösern gesucht und die haben bei denen, die ich nicht lösen konnte Backtracking, d.h. systematisches Ausprobieren angewendet.</p>
<p>Die Idee von meinem Sudoku: Jedes Feld innerhalb des Spielfeldes ist eine Menge von möglichen Zahlen. Je nach Position der anderen Zahlen werden dann Möglichkeiten ausgeschlossen (Zahl schon in der horizontalen oder vertikalen Reihe oder in kleinen Quadrat vorhanden) und wenn es innerhalb eines Quadrates oder einer vertikalen bzw. horizontalen Reihe nur noch eine Möglichkeit gibt die Zahl zu setzen, oder für ein Feld nur noch ein Element möglich ist, wird es gesetzt und das Ganze geht wieder von vorne los...</p>
<p>Hier der Code, der allerdings wahrscheinlich nicht GANZ sauber ist:</p>
<p>Feld.h:</p>
<pre><code class="language-cpp">#ifndef __FELD_H__
#define __FELD_H__

class Feld
{
    public:
    static const int MaxNumber = 9;
    Feld(void);
    ~Feld(void);
    bool Exclude(int Nummer);
    bool Assign(int Nummer);
    int Number(void);
    const bool operator[] (int Index);
    private:
    bool Zustaende[MaxNumber];
    int NumberOfPossibilities (void);
};
#endif
</code></pre>
<p>Feld.cpp:</p>
<pre><code class="language-cpp">#include &quot;Feld.h&quot;

Feld::Feld(void)
{
    for(int i = 0; i &lt; MaxNumber; ++i)
    {
        Zustaende[i] = true;
    }
}

Feld::~Feld(void)
{
}

bool Feld::Exclude (int Nummer)
{
    if((Nummer &lt;= 0) || (Nummer &gt; MaxNumber))
    {
        return false;
    }
    if(Nummer-1 &lt; MaxNumber)
    {
        if(Zustaende[Nummer-1])
        {
            Zustaende[Nummer-1] = false;
            return true;
        }
    }
    return false;
}

bool Feld::Assign(int Nummer)
{
    bool ReturnValue = false;
    if((Nummer &lt;= 0) || (Nummer &gt; MaxNumber))
    {
        return false;
    }
    for(int i = 0; i &lt; MaxNumber; ++i)
    {
        if(i != Nummer-1)
        {
            if(Zustaende[i])
            {
                ReturnValue = true;
                Zustaende[i] = false;
            }
        }
        else
        {
            if(!(Zustaende[i]))
            {
                ReturnValue = true;
                Zustaende[i] = true;
            }
        }
    }
    return ReturnValue;
}

int Feld::NumberOfPossibilities(void)
{
    int ReturnValue = 0;
    for(int i = 0; i &lt; MaxNumber; ++i)
    {
        ReturnValue += Zustaende[i];
    }
    return ReturnValue;
}

int Feld::Number(void)
{
    if(NumberOfPossibilities() != 1)
    {
        return 0;
    }
    for(int i = 0; i &lt; MaxNumber; ++i)
    {
        if(Zustaende[i])
        {
            return i+1;
        }
    }
    return 0;
}

const bool Feld::operator[] (int Index)
{
    if(Index &lt;= 0)
    {
        return false;
    }
    if(Index-1 &lt; MaxNumber)
    {
        return Zustaende[Index-1];
    }
    return false;
}
</code></pre>
<p>SpielFeld.h:</p>
<pre><code class="language-cpp">#ifndef __SPIELFELD_H__
#define __SPIELFELD_H__
#include &quot;Feld.h&quot;
#include &lt;string&gt;

class SpielFeld
{
    private:
    static const int XDimension = 9, YDimension = 9;
    Feld Felder[XDimension][YDimension];
    bool RefreshPossibilities(void);
    bool CeckUniqueness(void);
    public:
    SpielFeld(const std::string &amp;Dateiname);
    ~SpielFeld(void);
    bool Loesen(void);
    bool Geloest(void);
    void Ausgeben(void);
};
#endif
</code></pre>
<p>SpielFeld.cpp:</p>
<pre><code class="language-cpp">#include &quot;SpielFeld.h&quot;
#include &lt;fstream&gt;
#include &lt;iostream&gt;

SpielFeld::SpielFeld (const std::string &amp;Dateiname)
{
    std::ifstream Datei(Dateiname.c_str());
    int Number = 0;
    for(int i = 0; i &lt; YDimension; ++i)
    {
        for(int j = 0; (j &lt; XDimension) &amp;&amp; !(Datei.eof()); ++j)
        {
            Datei &gt;&gt; Number;
            if((Number &gt; 0) &amp;&amp; (Number &lt;= Feld::MaxNumber))
            {
                Felder[j][i].Assign(Number);
            }
        }
    }
    Datei.close();
}

SpielFeld::~SpielFeld(void)
{
}

bool SpielFeld::Loesen(void)
{
    bool Aenderung = true;
    while((Aenderung) &amp;&amp; (!Geloest()))
    {
        Aenderung = RefreshPossibilities();
        Aenderung = Aenderung || CeckUniqueness();
    }
    return Geloest();
}

void SpielFeld::Ausgeben(void)
{
    for(int i = 0; i &lt; YDimension; ++i)
    {
        if(!(i%3) &amp;&amp; i)
        {
            for(int k = 0; k &lt; 2*XDimension-1; ++k)
            {
                if(((k+1)%6) || (!k))
                {
                    std::cout &lt;&lt; &quot;-&quot;;
                }
                else
                {
                    std::cout &lt;&lt; &quot;+&quot;;
                }
            }
            std::cout &lt;&lt; std::endl;
        }
        for(int j = 0; j &lt; XDimension; ++j)
        {
            if(Felder[j][i].Number())
            {
                std::cout &lt;&lt; Felder[j][i].Number();
            }
            else
            {
                std::cout &lt;&lt; ' ';
            }
            if(!((j%3)-2) &amp;&amp; (j) &amp;&amp; (j&lt;XDimension-1))
            {
                std::cout &lt;&lt; &quot;|&quot;;
            }
            else
            {
                std::cout &lt;&lt; ' ';
            }
        }
        std::cout &lt;&lt; '\n';
    }
}

bool SpielFeld::Geloest(void)
{
    for(int i = 0; i &lt; YDimension; ++i)
    {
        for(int j = 0; j &lt; XDimension; ++j)
        {
            if(!(Felder[j][i].Number()))
            {
                return false;
            }
        }
    }
    return true;
}

bool SpielFeld::RefreshPossibilities(void)
{
    bool Aenderung = false;
    for(int i = 0; i &lt; XDimension; ++i)
    {
        for(int j = 0; j &lt; YDimension; ++j)
        {
            if(Felder[i][j].Number())
            {
                //Horizontal ausschließen
                for(int k = 0; k &lt; XDimension; ++k)
                {
                    if(k != i)
                    {
                        Aenderung = Felder[k][j].Exclude(Felder[i][j].Number()) || Aenderung;
                    }
                }
                //Vertikal ausschließen
                for(int k = 0; k &lt; YDimension; ++k)
                {
                    if(k != j)
                    {
                        Aenderung = Felder[i][k].Exclude(Felder[i][j].Number()) || Aenderung;
                    }
                }
                //Im kleinen Rechteck ausschließen
                for(int k = i-(i%3); k &lt; (i-(i%3))+3; ++k)
                {
                    for(int l = j-(j%3); l &lt; j-(j%3)+3; ++l)
                    {
                        if(!((k == i) &amp;&amp; (l == j)))
                        {
                            Aenderung = Felder[k][l].Exclude(Felder[i][j].Number()) || Aenderung;
                        }
                    }
                }
            }
        }
    }
    return Aenderung;
}

bool SpielFeld::CeckUniqueness(void)
{
    bool ReturnValue = false;
    for(int i = 0; i &lt; XDimension; ++i)
    {
        for(int j = 0; j &lt; YDimension; ++j)
        {
            //War: !Felder[i][j].Number()
            if(Felder[i][j].Number())
            {
                continue;
            }
            for(int Number = 1; Number &lt;= Feld::MaxNumber; ++Number)
            {
                if(Felder[i][j][Number])
                {
                    bool OtherOccurence = false;
                    //Horizontal überprüfen
                    for(int k = 0; k &lt; XDimension; ++k)
                    {
                        if((Felder[k][j][Number]) &amp;&amp; (k!=i))
                        {
                            OtherOccurence = true;
                        }
                    }
                    if(!OtherOccurence)
                    {
                        ReturnValue = Felder[i][j].Assign(Number) || ReturnValue;
                        break;
                    }
                    OtherOccurence = false;
                    //Vertikal überprüfen
                    for(int k = 0; k &lt; YDimension; ++k)
                    {
                        if((Felder[i][k][Number]) &amp;&amp; (k!=j))
                        {
                            OtherOccurence = true;
                        }
                    }
                    if(!OtherOccurence)
                    {
                        ReturnValue = Felder[i][j].Assign(Number) || ReturnValue;
                        break;
                    }
                    //Im kleinen Rechteck überprüfen
                    OtherOccurence = false;
                    for(int k = i-(i%3); k &lt; (i-(i%3))+3; ++k)
                    {
                        for(int l = j-(j%3); l &lt; (j-(j%3))+3; ++l)
                        {
                            if((Felder[k][l][Number]) &amp;&amp; !((k == i) &amp;&amp; (l == j)))
                            {
                                OtherOccurence = true;
                            }
                        }
                    }
                    if(!OtherOccurence)
                    {
                        ReturnValue = Felder[i][j].Assign(Number) || ReturnValue;
                        break;
                    }
                }
            }
        }
    }
    return ReturnValue;
}
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;Feld.h&quot;
#include &quot;SpielFeld.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main(void)
{
    cout &lt;&lt; &quot;Bitte Dateinamen eingeben!\n&quot;;
    string Dateiname;
    cin &gt;&gt; Dateiname;
    cout &lt;&lt; endl &lt;&lt; endl;
    SpielFeld Sudoku(Dateiname);
    Sudoku.Ausgeben();
    cout &lt;&lt; endl &lt;&lt; endl;
    Sudoku.Loesen();
    Sudoku.Ausgeben();
    cin.get();
    cin.get();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1002996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1002996</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Sat, 25 Feb 2006 21:18:48 GMT</pubDate></item></channel></rss>