<?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[Ausgabe total verhunzt :(]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe folgendes Programm geschrieben, aber die ausgabe ist total verhunzt, ohne das ich verstehe wieso</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iomanip&gt;
#include &lt;cstdlib&gt;
#include &lt;ctime&gt;
using namespace std;

void shuffel (int[] [13]);
void deal (const int[] [13], const char* [], const char* []);

int main()
{
	const char *suit[4] = {&quot;Hearts&quot;, &quot;Diamonds&quot;, &quot;Clubs&quot;, &quot;Spades&quot;};
	const char *face[13]= {&quot;Ace&quot;, &quot;Deuce&quot;,&quot;Three&quot;, &quot;Four&quot;, &quot;Five&quot;,
						   &quot;Six&quot;, &quot;Seven&quot;, &quot;Eight&quot;, &quot;Nine&quot;, &quot;Ten&quot;, &quot;Jack&quot;, &quot;Queen&quot;, &quot;King&quot;};
	int deck[4][13];

	//initiallisiere Deck linear(1...52)
	for(int i=0; i&lt;4; i++)
	for(int c=0; c&lt;13; c++)
	deck[i][c-1] = i+13+c;
	srand(time(0));
	shuffel(deck);
	deal(deck,face,suit);
	system(&quot;pause&quot;);

	return 0;
 }

 void shuffel(int wDeck[][13])
 {
	 int row, column, rand_row, rand_column, tmp;

	 for (int i=0; i&lt;8 ; i++)
		 {
			 //row by row
			 for(row=0; row&lt;4; row++)
				 for(column=0;column&lt;13;column++)
					 {
						 rand_row = rand()%4;
						 rand_column= rand()%13;

						 tmp = wDeck[rand_row][rand_column] = wDeck[row][column];
						 wDeck[row][column] = tmp;
					 }

				 //column by column
				 for(column=0;column&lt;13;column++)
				for(row=0;row&lt;4;row++)
					{
						rand_row = rand()%4;
						rand_column= rand()%13;

						tmp = wDeck[rand_row][rand_column] = wDeck[row][column];
						wDeck[row][column] = tmp;
					}
			}
 }

 //austeilen der karten
 void deal (const int wDeck[][13], const char *wFace[], const char *wSuit[])
 {
	 bool found;
	 for (int card =1;card &lt;=52;card++)
		 {
			 found =false;

			 for (int row=0;row&lt;=3 &amp;&amp; !found; row++)
			 for (int column=0; column&lt;=12 &amp;&amp; !found; column++)
			 if(wDeck[row][column] ==card)
				 {
					 cout &lt;&lt; setw(15) &lt;&lt; right &lt;&lt; wFace[column]
					 &lt;&lt; &quot; of &quot; &lt;&lt; setw(8) &lt;&lt; left &lt;&lt; wSuit[row]
					 &lt;&lt; (card % 2 == 0? '/n' : '/t');

					 found=true;
				 }
		 }
 }
</code></pre>
<p>Ausserdem bekomme ich einen Fehler</p>
<blockquote>
<p>Run-Time Check Failure #2 - Stack around the variable 'deck' was corrupted.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/topic/170734/ausgabe-total-verhunzt</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 04:41:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170734.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Jan 2007 07:21:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 07:21:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe folgendes Programm geschrieben, aber die ausgabe ist total verhunzt, ohne das ich verstehe wieso</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iomanip&gt;
#include &lt;cstdlib&gt;
#include &lt;ctime&gt;
using namespace std;

void shuffel (int[] [13]);
void deal (const int[] [13], const char* [], const char* []);

int main()
{
	const char *suit[4] = {&quot;Hearts&quot;, &quot;Diamonds&quot;, &quot;Clubs&quot;, &quot;Spades&quot;};
	const char *face[13]= {&quot;Ace&quot;, &quot;Deuce&quot;,&quot;Three&quot;, &quot;Four&quot;, &quot;Five&quot;,
						   &quot;Six&quot;, &quot;Seven&quot;, &quot;Eight&quot;, &quot;Nine&quot;, &quot;Ten&quot;, &quot;Jack&quot;, &quot;Queen&quot;, &quot;King&quot;};
	int deck[4][13];

	//initiallisiere Deck linear(1...52)
	for(int i=0; i&lt;4; i++)
	for(int c=0; c&lt;13; c++)
	deck[i][c-1] = i+13+c;
	srand(time(0));
	shuffel(deck);
	deal(deck,face,suit);
	system(&quot;pause&quot;);

	return 0;
 }

 void shuffel(int wDeck[][13])
 {
	 int row, column, rand_row, rand_column, tmp;

	 for (int i=0; i&lt;8 ; i++)
		 {
			 //row by row
			 for(row=0; row&lt;4; row++)
				 for(column=0;column&lt;13;column++)
					 {
						 rand_row = rand()%4;
						 rand_column= rand()%13;

						 tmp = wDeck[rand_row][rand_column] = wDeck[row][column];
						 wDeck[row][column] = tmp;
					 }

				 //column by column
				 for(column=0;column&lt;13;column++)
				for(row=0;row&lt;4;row++)
					{
						rand_row = rand()%4;
						rand_column= rand()%13;

						tmp = wDeck[rand_row][rand_column] = wDeck[row][column];
						wDeck[row][column] = tmp;
					}
			}
 }

 //austeilen der karten
 void deal (const int wDeck[][13], const char *wFace[], const char *wSuit[])
 {
	 bool found;
	 for (int card =1;card &lt;=52;card++)
		 {
			 found =false;

			 for (int row=0;row&lt;=3 &amp;&amp; !found; row++)
			 for (int column=0; column&lt;=12 &amp;&amp; !found; column++)
			 if(wDeck[row][column] ==card)
				 {
					 cout &lt;&lt; setw(15) &lt;&lt; right &lt;&lt; wFace[column]
					 &lt;&lt; &quot; of &quot; &lt;&lt; setw(8) &lt;&lt; left &lt;&lt; wSuit[row]
					 &lt;&lt; (card % 2 == 0? '/n' : '/t');

					 found=true;
				 }
		 }
 }
</code></pre>
<p>Ausserdem bekomme ich einen Fehler</p>
<blockquote>
<p>Run-Time Check Failure #2 - Stack around the variable 'deck' was corrupted.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1212422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212422</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Fri, 19 Jan 2007 07:21:49 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 07:53:27 GMT]]></title><description><![CDATA[<p>ThaRealMatix schrieb:</p>
<blockquote>
<p>deck[i][c-1] = i+13+c;</p>
</blockquote>
<p>Überleg doch mal, was hier beim ersten Schleifendurchlauf passiert. Hier sind gleich zwei Fehler drin.</p>
<p>Das Zeichen zum Einleiten einer Escapesequenz ist \, nicht /.</p>
<p>Und Zuweisungen werden von rechts nach links abgearbeitet. Dein Tauschvorgang funktioniert so nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212431</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Fri, 19 Jan 2007 07:53:27 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 09:01:29 GMT]]></title><description><![CDATA[<p>tut mir leid, aber ich komme nicht auf die Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212467</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:01:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 09:15:26 GMT]]></title><description><![CDATA[<p>Dann lies mal die Antworten:</p>
<p>MFK schrieb:</p>
<blockquote>
<p>ThaRealMatix schrieb:</p>
<blockquote>
<p>deck[i][c-1] = i+13+c;</p>
</blockquote>
<p>Überleg doch mal, was hier beim ersten Schleifendurchlauf passiert. Hier sind gleich zwei Fehler drin.</p>
</blockquote>
<p>Am Schleifenbeginn ist i=0 und c=1, d.h. du greifst auf das Element deck[0][-1] zu - und das gibt es nicht.</p>
<blockquote>
<p>Das Zeichen zum Einleiten einer Escapesequenz ist \, nicht /.</p>
</blockquote>
<p>Im Klartext: Spezialzeichen solltest du als '\n' oder '\t' angeben, nicht als '/n' bzw. '/t' (beachte die Orientierung der Slashes).</p>
<blockquote>
<p>Und Zuweisungen werden von rechts nach links abgearbeitet. Dein Tauschvorgang funktioniert so nicht.</p>
</blockquote>
<p>Der Ausdruck <code>tmp = wDeck[rand_row][rand_column] = wDeck[row][column];</code> weist der Variablen temp und dem zufälligen Array-Element den Inhalt von 'wDeck[row][column]' zu, damit kannst du die beiden Array-Elemente nicht austauschen. Dazu benötigst du eine Zuweisungsfolge:</p>
<pre><code class="language-cpp">temp=wDeck[rand_row][rand_column];
wDeck[rand_row][rand_column]=wDeck[row][column];
wDeck[row][column]=temp;
//oder in Kurzfassung:
std::swap(wDeck[rand_row][rand_column],wDeck[row][column]);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1212473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212473</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 09:20:00 GMT]]></title><description><![CDATA[<p>Dann rechne doch mal nach.</p>
<p>Im ersten Schleifendurchlauf der äusseren Schleife (i=0) werden die Elemente deck[0][-1] - deck[3][-1] auf die Werte 0,1,2,...,13 gesetzt. Im zweiten Durchlauf die Elemnte deck[0][0] - deck[3][0] auf die Werte 1,2,3,...,14. Das ist wohl nicht das, was Du erreichen willst. Das erklärt auch die Fehlermeldung. deck[0][-1] liegt ausserhalb des Arrays.</p>
<p>Und noch was: Du solltest dringend die Einrückung im Programm korrigieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212477</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:20:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 09:28:24 GMT]]></title><description><![CDATA[<p>Hm ich habs nun mal so:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iomanip&gt;
#include &lt;cstdlib&gt;
#include &lt;ctime&gt;
using namespace std;

void shuffel (int[] [13]);
void deal (const int[] [13], const char* [], const char* []);

int main()
{
	const char *suit[4] = {&quot;Herz&quot;, &quot;Karo&quot;, &quot;Kreuz&quot;, &quot;Pik&quot;};
	const char *face[13]= {&quot;Ass&quot;, &quot;2&quot;,&quot;3&quot;, &quot;4&quot;, &quot;5&quot;,
						   &quot;6&quot;, &quot;7&quot;, &quot;8&quot;, &quot;9&quot;, &quot;10&quot;, &quot;Bube&quot;, &quot;Dame&quot;, &quot;König&quot;};
	int deck[4][13];

	//initiallisiere Deck linear(1...52)
	for(int i=0; i&lt;4; i++)
	for(int c=0; c&lt;13; c++)
	deck[i][c] = i+13+c;
	srand(time(0));
	shuffel(deck);
	deal(deck,face,suit);
	system(&quot;pause&quot;);

	return 0;
 }

 void shuffel(int wDeck[][13])
 {
	 int row, column, rand_row, rand_column, tmp;

	 for (int i=0; i&lt;8 ; i++)
		 {
			 //Reihe für Reihe
			 for(row=0; row&lt;4; row++)
				 for(column=0;column&lt;13;column++)
					 {
						 rand_row = rand()%4;
						 rand_column= rand()%13;

						 std::swap(wDeck[rand_row][rand_column],wDeck[row][column]); 	
						 //tmp = wDeck[rand_row][rand_column] = wDeck[row][column];
						 //wDeck[row][column] = tmp;
					 }

				 //Zeile für Zeile
				 for(column=0;column&lt;13;column++)
				for(row=0;row&lt;4;row++)
					{
						rand_row = rand()%4;
						rand_column= rand()%13;

						std::swap(wDeck[rand_row][rand_column],wDeck[row][column]);
						//tmp = wDeck[rand_row][rand_column] = wDeck[row][column];
						//wDeck[row][column] = tmp;
					}
			}
 }

 //austeilen der karten
 void deal (const int wDeck[][13], const char *wFace[], const char *wSuit[])
 {
	 bool found;
	 for (int card =1;card &lt;=52;card++)
		 {
			 found =false;

			 for (int row=0;row&lt;=3 &amp;&amp; !found; row++)
			 for (int column=0; column&lt;=12 &amp;&amp; !found; column++)
			 if(wDeck[row][column] ==card)
				 {
					 cout &lt;&lt; setw(15) &lt;&lt; right &lt;&lt; wFace[column]
					 &lt;&lt; &quot; mal &quot; &lt;&lt; setw(8) &lt;&lt; left &lt;&lt; wSuit[row]
					 &lt;&lt; (card % 2 == 0? '\n' : '\t');

					 found=true;
				 }
		 }
 }
</code></pre>
<p>Die ausgabe erscheint immer noch verkehrt... er schreibt nun z.B<br />
Ass mal Karo .. was ja eh mal quatsch ist, aber die Anzahl fehlt ja auch -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212482</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 09:52:02 GMT]]></title><description><![CDATA[<p>ThaRealMatix schrieb:</p>
<blockquote>
<p>er schreibt nun z.B<br />
Ass mal Karo .. was ja eh mal quatsch ist, aber die Anzahl fehlt ja auch -.-</p>
</blockquote>
<p>Was für eine Anzahl? Wie soll die Ausgabe denn aussehen?</p>
<p>ThaRealMatix schrieb:</p>
<blockquote>
<p>deck[i][c] = i+13+c;</p>
</blockquote>
<p>Der zweite Fehler ist hier immer noch drin. Mit dieser Formel erzeugst du nicht die Zahlen von 1 bis 52. Lass dir i+13+c doch mal ausgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212497</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:52:02 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 09:57:02 GMT]]></title><description><![CDATA[<p>Die aufgabenstellung ist folgende:</p>
<blockquote>
<p>Im Kartenmisch- und -gebeprogramm der Vorlesung wurde ein ineffizienter Mischalgorithmus verwendet, bei dem es nicht<br />
garantiert war, dass er in einer bestimmten Zeit abgeschlossen ist. Dieser Algorithmus soll verbessert werden.<br />
l Initialisieren Sie das deck Array wie folgt:<br />
0 1 2 3 4 5 6 7 8 9 10 11 12<br />
0 1 2 3 4 5 6 7 8 9 10 11 12 13<br />
1 14 15 16 17 18 19 20 21 22 23 24 25 26<br />
2 27 28 29 30 31 32 33 34 35 36 37 38 39<br />
3 40 41 42 43 44 45 46 47 48 49 50 51 52<br />
l Modifizieren Sie die shuffle Funktion so, dass sie Zeile für Zeile und Spalte für Spalte durch das Array läuft und jedes Element<br />
einmal bearbeitet: Jedes Element soll mit einem zufällig ausgewählten Element des Arrays vertauscht werden. Die shuffle<br />
Funktion soll so oft ausgeführt werden, bis das Blatt gut gemischt ist. Überprüfen Sie dies durch Ausdrucken des Arrays.<br />
l Optimieren Sie zusätzlich auch den Gebe-Algorithmus in der deal Funktion: Sobald eine Karte ausgegeben ist, soll nicht weiter<br />
nach der Nummer dieser Karte gesucht werden, sondern das Programm soll sofort mit dem Geben der nächsten Karte fortfahren.</p>
</blockquote>
<p>und ich bin möglicherweise doof aber ich verstehe deinen hinweis nicht.. muss da nen * anstatt + hin oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212501</guid><dc:creator><![CDATA[ThaRealMatix]]></dc:creator><pubDate>Fri, 19 Jan 2007 09:57:02 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 10:01:48 GMT]]></title><description><![CDATA[<p>ThaRealMatix schrieb:</p>
<blockquote>
<p>und ich bin möglicherweise doof aber ich verstehe deinen hinweis nicht.. muss da nen * anstatt + hin oder wie?</p>
</blockquote>
<p>Gut erkannt <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="😉"
    /> Versuch' doch einfach aus der Tabelle die Berechnungsvorschrift für die Array-Elemente zu ermitteln.</p>
<p>(Lösung: <sub>i*13+c+1</sub>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212503</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 Jan 2007 10:01:48 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 10:04:17 GMT]]></title><description><![CDATA[<p>ThaRealMatix schrieb:</p>
<blockquote>
<p>und ich bin möglicherweise doof aber ich verstehe deinen hinweis nicht.. muss da nen * anstatt + hin oder wie?</p>
</blockquote>
<p>Meine ganz persönliche Meinung: Wenn du das nicht allein hinbekommst, sitzt du in der falschen Vorlesung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212504</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Fri, 19 Jan 2007 10:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe total verhunzt :( on Fri, 19 Jan 2007 10:38:45 GMT]]></title><description><![CDATA[<p>Mal was anderes: Was spricht gegen Knuths (bzw. Moses', Oakfords und Durstfelds) Shuffle-Algorithmus? Der Algorithmus aus der Aufgabenstellung ist m.E. richtig schlecht. Knuths hat eine Laufzeit von O(n) und garantiert eine Gleichverteilung. Und, als Bonus ist er in C++ in gängigen Versionen der STL bereits implementiert (SGI zumindest verwendet ihn für ihr 'random_shuffle' und ich vermute mal, dass die meisten anderen STL-Hersteller das auch tun werden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1212537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1212537</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Fri, 19 Jan 2007 10:38:45 GMT</pubDate></item></channel></rss>