<?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[Mehrere Zufallszahlen aus Arraymenge]]></title><description><![CDATA[<p>Erstmal ein guten Tag an alles Forenmitglieder^^</p>
<p>Ich habe mit C++ erst vor einigen Wochen angefangen. Um das bisherige Wissen zu vertiefen habe ich mich an das Programmieren eines &quot;Poker-Spiels&quot; gemacht.</p>
<p>Dennoch gibts da ein Problem:<br />
(Der folgende Code ist die Funktion der eine Zufallszahl erzeugt und dann schaut ob die Zufallskarte noch im Deck ist und diese dann als return zurückgibt)</p>
<pre><code class="language-cpp">int Zufallskarte (struct S_Deck *p_Deck)
{
	int iWhileende = 0;		// Variable um die Schleife zu beenden

	do
	{
		int iZufall;	// Die Zufallsvariable	
		srand (timeGetTime ());  
		iZufall = (rand()%52);  /* Die Zahl wird von 0 bis 51 zufällig  gewählt (52 Karten) */

		for (int i=0; i &lt; 51; i++) // Schleife die 52 mal läuft
		{
			if  (iZufall == i) // Sollte die Schleifenvariable gleich der Zufälligen sein, dann wird die Bedingung erfüllt
			{
				if (p_Deck [i].bVorhanden == true) /* Ich habe einen Array verwendet welcher 52 Struckturen in sich hat
und jede Struktur besteht aus einem Bool um festzustehlen ob die Karte im Deck ist */
				{
					p_Deck [i].bVorhanden = false;
					iWhileende = 1;
					return i;
				}

			}
		}

	} while (iWhileende == 0);

	return 0;
}
</code></pre>
<p>Nun Gut das Funktioniert perfekt nun habe ich innerhalb der eigentlichen Spiel-Funktion folgendes Verwendet</p>
<pre><code class="language-cpp">int iRueckgabezufall;
// Erste Karte ausgeben und als die erste Spielerkarte angeben
	iRueckgabezufall = Zufallskarte (p_Deck);
	ASpielerkarte1 [iRueckgabezufall].bVorhanden = true;

	for (int u=0; u &lt; 51; u++)
	{
		if (ASpielerkarte1 [u].bVorhanden == true)
		{
			cout &lt;&lt; &quot;Das ist die &quot; &lt;&lt; u &lt;&lt; &quot; Position der ersten Spielerkarte.\n&quot;;
		}

	}
	iRueckgabezufall = 0;
	Sleep(500);
</code></pre>
<p>Nur das blöde ist, dass wenn ich den obrigen Code einfach Kopiere (um zum Beispiel die 2te Spielerkarte festzulegen (Jeder Spielerkarte ist ihrerseits ein 52er Array und jenachdem welche Position in diesem Array True ist weis ich welche Karte der Spieler bekommen hat). Wenn ich dann die Kopie eine neue Schleifenvariable sowie der Kopie sage das sie in den Array &quot;ASpielerkarte 2&quot; reinschreibt, dann ergibt sich folgendes Bild:</p>
<pre><code>Das ist die 13 Position der ersten Spielerkarte
Das ist die 13 Position der zweiten Spielerkarte
</code></pre>
<p>Weis vllt einer warum bei jedem mal die gleiche Zufallszahl heraus kommt? Durch &quot;gettime()&quot; wird ja bei jedem mal wo eine neue Karte gezogen wird eine andere Zeit aus dem System geladen, also eine andere Zahl sollte herauskommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272377/mehrere-zufallszahlen-aus-arraymenge</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 20:25:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272377.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 Aug 2010 15:31:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 15:31:55 GMT]]></title><description><![CDATA[<p>Erstmal ein guten Tag an alles Forenmitglieder^^</p>
<p>Ich habe mit C++ erst vor einigen Wochen angefangen. Um das bisherige Wissen zu vertiefen habe ich mich an das Programmieren eines &quot;Poker-Spiels&quot; gemacht.</p>
<p>Dennoch gibts da ein Problem:<br />
(Der folgende Code ist die Funktion der eine Zufallszahl erzeugt und dann schaut ob die Zufallskarte noch im Deck ist und diese dann als return zurückgibt)</p>
<pre><code class="language-cpp">int Zufallskarte (struct S_Deck *p_Deck)
{
	int iWhileende = 0;		// Variable um die Schleife zu beenden

	do
	{
		int iZufall;	// Die Zufallsvariable	
		srand (timeGetTime ());  
		iZufall = (rand()%52);  /* Die Zahl wird von 0 bis 51 zufällig  gewählt (52 Karten) */

		for (int i=0; i &lt; 51; i++) // Schleife die 52 mal läuft
		{
			if  (iZufall == i) // Sollte die Schleifenvariable gleich der Zufälligen sein, dann wird die Bedingung erfüllt
			{
				if (p_Deck [i].bVorhanden == true) /* Ich habe einen Array verwendet welcher 52 Struckturen in sich hat
und jede Struktur besteht aus einem Bool um festzustehlen ob die Karte im Deck ist */
				{
					p_Deck [i].bVorhanden = false;
					iWhileende = 1;
					return i;
				}

			}
		}

	} while (iWhileende == 0);

	return 0;
}
</code></pre>
<p>Nun Gut das Funktioniert perfekt nun habe ich innerhalb der eigentlichen Spiel-Funktion folgendes Verwendet</p>
<pre><code class="language-cpp">int iRueckgabezufall;
// Erste Karte ausgeben und als die erste Spielerkarte angeben
	iRueckgabezufall = Zufallskarte (p_Deck);
	ASpielerkarte1 [iRueckgabezufall].bVorhanden = true;

	for (int u=0; u &lt; 51; u++)
	{
		if (ASpielerkarte1 [u].bVorhanden == true)
		{
			cout &lt;&lt; &quot;Das ist die &quot; &lt;&lt; u &lt;&lt; &quot; Position der ersten Spielerkarte.\n&quot;;
		}

	}
	iRueckgabezufall = 0;
	Sleep(500);
</code></pre>
<p>Nur das blöde ist, dass wenn ich den obrigen Code einfach Kopiere (um zum Beispiel die 2te Spielerkarte festzulegen (Jeder Spielerkarte ist ihrerseits ein 52er Array und jenachdem welche Position in diesem Array True ist weis ich welche Karte der Spieler bekommen hat). Wenn ich dann die Kopie eine neue Schleifenvariable sowie der Kopie sage das sie in den Array &quot;ASpielerkarte 2&quot; reinschreibt, dann ergibt sich folgendes Bild:</p>
<pre><code>Das ist die 13 Position der ersten Spielerkarte
Das ist die 13 Position der zweiten Spielerkarte
</code></pre>
<p>Weis vllt einer warum bei jedem mal die gleiche Zufallszahl heraus kommt? Durch &quot;gettime()&quot; wird ja bei jedem mal wo eine neue Karte gezogen wird eine andere Zeit aus dem System geladen, also eine andere Zahl sollte herauskommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940655</guid><dc:creator><![CDATA[_LiFeMaKeR_]]></dc:creator><pubDate>Mon, 16 Aug 2010 15:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 15:39:50 GMT]]></title><description><![CDATA[<p>huhu,</p>
<p><em>srand</em> hat in einer Schleife nichts verloren.</p>
<p>Schreib mal an den Anfang deiner main-Funktion</p>
<pre><code class="language-cpp">srand( time(NULL) );
</code></pre>
<p>und schau, ob dies dein Problem löst. <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/1940660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940660</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 16 Aug 2010 15:39:50 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 15:40:50 GMT]]></title><description><![CDATA[<p>srand nur einmal im Programm benutzen.</p>
<p>edit: Zu spät...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940661</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 16 Aug 2010 15:40:50 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 15:45:51 GMT]]></title><description><![CDATA[<p>Danke erstma für die schnellen antworten^^</p>
<p>hmm ich habe jetzt srand am anfang Verwendet nur gibt das Programm weiterhin bei beiden Karten die gleiche Zahl raus. Eigentlich doch Logisch soweit ichs weis. Ich gebe ja einmal über die Zeit der Zufallsfunktion rand (was wiederum ja nur eine Mathematische Formel ist) den gleichen Startwert. und wenn man bei beiden Zufallsausgaben den gleichen Startwert besitzt würde würde das Ergebnis der Formel ebenfalls gleich sein oder? Korrigiert mich wenn ich falsch liege^^</p>
<p>Aber eins weiß ich: Die Lösung hat leider nicht Funktioniert^^<br />
Aber danke für die Bemühungen^^</p>
<p>mfg<br />
_LiFeMaKeR_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940665</guid><dc:creator><![CDATA[_LiFeMaKeR_]]></dc:creator><pubDate>Mon, 16 Aug 2010 15:45:51 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 15:50:59 GMT]]></title><description><![CDATA[<p><em>LiFeMaKeR</em> schrieb:</p>
<blockquote>
<p>hmm ich habe jetzt srand am anfang Verwendet nur gibt das Programm weiterhin bei beiden Karten die gleiche Zahl raus. Eigentlich doch Logisch soweit ichs weis. Ich gebe ja einmal über die Zeit der Zufallsfunktion rand (was wiederum ja nur eine Mathematische Formel ist) den gleichen Startwert. und wenn man bei beiden Zufallsausgaben den gleichen Startwert besitzt würde würde das Ergebnis der Formel ebenfalls gleich sein oder? Korrigiert mich wenn ich falsch liege^^</p>
</blockquote>
<p>Wenn du zweimal den gleichen Startwert nimmst, dann bekommst du danach jeweils die gleiche Folge von Zufallszahlen. Aber gerade deswegen solltest du ja srand auch nur einmal setzen, wenn du das nicht haben möchtest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940671</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 16 Aug 2010 15:50:59 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 15:58:26 GMT]]></title><description><![CDATA[<p>^^ ich verwende es doch nur einmal^^ Ich habe das srand nur 1 mal in der Funktion die für das neue Spiel zuständig ist (und die kann nur einmal durchlaufen werden)<br />
und zwar direkt nach der geschweiften Klammer gestellt. Also so habe ich es geändert wie du sagst ist srand nur einmal gesetzt. Aber das Ergebnis verändert sich leider nicht^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940676</guid><dc:creator><![CDATA[_LiFeMaKeR_]]></dc:creator><pubDate>Mon, 16 Aug 2010 15:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 16:01:20 GMT]]></title><description><![CDATA[<p>Poste mal nochmal Code <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="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940678</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 16 Aug 2010 16:01:20 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 16:13:08 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;windows.h&gt;
#include &lt;stdlib.h&gt;

#pragma comment (lib, &quot;winmm.lib&quot;)

using namespace std;

#include &quot;Spiel.hpp&quot;

void Neuesspiel (int *pBigblind, int *pSmallblind, int *pRate, int *pSchwierigkeitsgrad,
				 int *pRunde)
{
	srand (timeGetTime ());
	// Spielarrays

	system(&quot;cls&quot;);
	S_Deck ADeck [52];										// Deck Array
	struct S_Deck *p_Deck = &amp;ADeck[0];						// Der Pointer des Deck Arrays
	S_Deck ASpielerkarte1 [52];								// Spielerkarte1 Array
	struct S_Deck *p_Spielerkarte1 = &amp;ASpielerkarte1[0];	// Der Pointer des Spielerkarte1 Arrays
	S_Deck ASpielerkarte2 [52];								// Spielerkarte2 Array
	struct S_Deck *p_Spielerkarte2 = &amp;ASpielerkarte2[0];	// Der Pointer des Spielerkarte2 Arrays
	S_Deck AGegnerkarte1 [52];								// Gegnerkarte1 Array
	struct S_Deck *p_Gegnerkarte1 = &amp;AGegnerkarte1[0];		// Der Pointer des Gegnerkarte1 Arrays
	S_Deck AGegnerkarte2 [52];								// Gegnerkarte1 Array
	struct S_Deck *p_Gegnerkarte2 = &amp;AGegnerkarte2[0];		// Der Pointer des Gegnerkarte2 Arrays
	S_Deck AMittelkarte1 [52];								// Mittelkarte1 Array
	struct S_Deck *p_Mittelkarte1 = &amp;AMittelkarte1[0];		// Der Pointer des Mittelkarte1 Arrays
	S_Deck AMittelkarte2 [52];								// Mittelkarte2 Array
	struct S_Deck *p_Mittelkarte2 = &amp;AMittelkarte2[0];		// Der Pointer des Mittelkarte2 Arrays
	S_Deck AMittelkarte3 [52];								// Mittelkarte3 Array
	struct S_Deck *p_Mittelkarte3 = &amp;AMittelkarte3[0];		// Der Pointer des Mittelkarte3 Arrays
	S_Deck AMittelkarte4 [52];								// Mittelkarte4 Array
	struct S_Deck *p_Mittelkarte4 = &amp;AMittelkarte4[0];		// Der Pointer des Mittelkarte4 Arrays
	S_Deck AMittelkarte5 [52];								// Mittelkarte5 Array
	struct S_Deck *p_Mittelkarte5 = &amp;AMittelkarte5[0];		// Der Pointer des Mittelkarte5 Arrays

	for (int i1=0; i1 &lt; 51; i1++)		// Schleife um jeden boolean im Deck auf True zu setzen
	{
		ADeck[i1].bVorhanden = true;
	}

	for (int i2=0; i2 &lt; 51; i2++)		// Schleife um jeden boolean als erste Spielerkarte auf False zu setzen
	{
		ASpielerkarte1[i2].bVorhanden = false;
	}

	for (int i3=0; i3 &lt; 51; i3++)		// Schleife um jeden boolean als zweite Spielerkarte auf False zu setzen
	{
		ASpielerkarte2[i3].bVorhanden = false;
	}

	for (int i4=0; i4 &lt; 51; i4++)		// Schleife um jeden boolean als erste Gegnerkarte auf False zu setzen
	{
		AGegnerkarte1[i4].bVorhanden = false;
	}

	for (int i5=0; i5 &lt; 51; i5++)		// Schleife um jeden boolean als zweite Gegnerkarte auf False zu setzen
	{
		AGegnerkarte2[i5].bVorhanden = false;
	}

	for (int i6=0; i6 &lt; 51; i6++)		// Schleife um jeden boolean als erste Mittelkarte auf False zu setzen
	{
		AMittelkarte1[i6].bVorhanden = false;
	}

	for (int i7=0; i7 &lt; 51; i7++)		// Schleife um jeden boolean als zweite Mittelkarte auf False zu setzen
	{
		AMittelkarte2[i7].bVorhanden = false;
	}

	for (int i8=0; i8 &lt; 51; i8++)		// Schleife um jeden boolean als dritte Mittelkarte auf False zu setzen
	{
		AMittelkarte3[i8].bVorhanden = false;
	}

	for (int i9=0; i9 &lt; 51; i9++)		// Schleife um jeden boolean als vierte Mittelkarte auf False zu setzen
	{
		AMittelkarte4[i9].bVorhanden = false;
	}

	for (int i10=0; i10 &lt; 51; i10++)		// Schleife um jeden boolean als fünfte Mittelkarte auf False zu setzen
	{
		AMittelkarte5[i10].bVorhanden = false;
	}

	// Variabeln
	int iRueckgabezufall;

	// Erste Karte ausgeben und als die erste Spielerkarte angeben
	iRueckgabezufall = Zufallskarte (p_Deck);
	ASpielerkarte1 [iRueckgabezufall].bVorhanden = true;

	for (int u=0; u &lt; 51; u++)
	{
		if (ASpielerkarte1 [u].bVorhanden == true)
		{
			cout &lt;&lt; &quot;Das ist die &quot; &lt;&lt; u &lt;&lt; &quot; Position der ersten Spielerkarte.\n&quot;;
		}

	}
	iRueckgabezufall = 0;
	Sleep(500);
	// Zweite Karte ausgeben und als die Zweite Spielerkarte angeben
	iRueckgabezufall = Zufallskarte (p_Deck);
	ASpielerkarte2 [iRueckgabezufall].bVorhanden = true;

	for (int u2=0; u2 &lt; 51; u2++)
	{
		if (ASpielerkarte1 [u2].bVorhanden == true)
		{
			cout &lt;&lt; &quot;Das ist die &quot; &lt;&lt; u2 &lt;&lt; &quot; Position der zweiten Spielerkarte.\n&quot;;
		}

	}
	iRueckgabezufall = 0;
	Sleep(500);

}

int Zufallskarte (struct S_Deck *p_Deck)
{
	int iWhileende = 0;		// Variable um die Schleife zu beenden

	do
	{
		int iZufall;		

		iZufall = (rand()%52);

		for (int i=0; i &lt; 51; i++)
		{
			if  (iZufall == i)
			{
				if (p_Deck [i].bVorhanden == true)
				{
					p_Deck [i].bVorhanden = false;
					iWhileende = 1;
					return i;
				}

			}
		}

	} while (iWhileende == 0);

	return 0;
}
</code></pre>
<p>Das ist die komplette Funktion für das neue Spiel vllt liegt der Fehler ja wo anders? ( Ach stört euch nicht an den übergegeben Variabeln in der Parameterliste da die jetzt noch nicht gebraucht werden tun die niemanden was^^</p>
<p>Nochmal zu dem System das ich mir ausgedacht hatte: Das Deck ist ein Array aus 52 Struckturen die jeweils eine bool inne haben welcher &quot;bVorhanden&quot; heißt. Dieser bool sagt mir ist die Karte noch im Deck? (true) oder nicht mehr (false).<br />
Das gleicht gilt für die 2 Spielerkarten und die 2 Gegnerkarten und die 5 Mittelkarten (Doch hier heißt &quot;True&quot; = Spieler hat Karte und &quot;False&quot; = Spieler hat die Karte nicht. Jede Position innerhalb des Arrays ist eine der 52 Karten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940684</guid><dc:creator><![CDATA[_LiFeMaKeR_]]></dc:creator><pubDate>Mon, 16 Aug 2010 16:13:08 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 16:16:52 GMT]]></title><description><![CDATA[<p>Wie und Wann werden die beiden Funktionen aufgerufen ? Zeig mal noch diesen Code^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940688</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 16 Aug 2010 16:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 16:24:08 GMT]]></title><description><![CDATA[<p>Unabhängig vom Fehler scheint mir dein System unnötig komplex. Warum nimmst du nicht z.B. ein 52-elementiges Integerarray, wobei jeder Wert die Position der Karte angibt (also z.B. array[13] == 0 heißt Karte 13 liegt im Deck, bei 1 hat sie Spieler 1, bei 2 Spieler 2 usw., bei -1 liegt sie in der Mitte).<br />
Vorteil: jede Karte kann nur eine Position haben. Außerdem (und auch deswegen) wird das gesamte Handling leichter und der Code einfacher und solche Fehler (wo auch immer er jetzt liegt) schleichen sich schwerer ein bzw. werden leichter entdeckt.</p>
<p>Nebenbei wird auch weniger Speicher verbraucht und das System ist leichter für eine beliebige Anzahl Spieler erweiterbar, aber das sind erstmal Nebeneffekte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940690</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Mon, 16 Aug 2010 16:24:08 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 16:30:17 GMT]]></title><description><![CDATA[<p>Also Zufallskarte wird NUR in der Funktion &quot;Neues Spiel aufgerufen&quot; und Und neues SPiel selbst ist etwas kompliziert umgedacht xD:</p>
<pre><code class="language-cpp">// Rückgabevariable für das Menü
	int iMenuerueck = 0;

	iMenuerueck = Start (pBigblind, pSmallblind, pRate, pSchwierigkeitsgrad, iMenuerueck);
	if (iMenuerueck == 1)
	{
	Neuesspiel (pBigblind, pSmallblind, pRate, pSchwierigkeitsgrad, pRunde);	
	}
	else if (iMenuerueck == 2)
	{
		system (&quot;cls&quot;);
		cout &lt;&lt; &quot;Spiel wird beendet\n&quot;;
	}
	return 0;
}
</code></pre>
<p>Das ist die &quot;Main&quot; Funktion die eine &quot;Start&quot; funktion ausführt (Musste ich umgehen da ich nicht wusste wie ich innerhalb einer Funktion die main Funktion aufrufe.</p>
<pre><code class="language-cpp">int Start (int *pBigblind, int *pSmallblind, int *pRate, int *pSchwierigkeitsgrad, int iMenuerueck)
{

	do		
	{
	iMenuerueck = Hauptmenue (iMenuerueck, pBigblind, pSmallblind, pRate, pSchwierigkeitsgrad);	
	} while (iMenuerueck == 0);

return iMenuerueck;
}
</code></pre>
<p>Die Start funktion wenn ich im Hauptmenü die &quot;1&quot; (Das heißt so viel wie Neues Spiel) drücke wird 1 zurückgegeben. Die Schleife ist nur dafür da damit sollte man im Hauptmenü eine eingabe machen die nicht logisch ist (nur 3 Menüpunkte also man gibt 5 ein) dann gibt das Hauptmenü 0 zurück und wird neu gestartet.</p>
<p>Klar gibt es viel einfachere System aber erstmal soll erstmal die Zufällige Ausgabe von der Karte gehen dann kann ich das gedachte System verbessern^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940693</guid><dc:creator><![CDATA[_LiFeMaKeR_]]></dc:creator><pubDate>Mon, 16 Aug 2010 16:30:17 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 16:42:10 GMT]]></title><description><![CDATA[<p>hmm, also lösch mal <strong>srand</strong> überall und schreibt direkt am Anfang der <strong>main</strong> genau diese Zeile:</p>
<pre><code class="language-cpp">srand( time(NULL) );
</code></pre>
<p>Ansonsten kannst du das Programm auch wo hochladen, dass man sichs genauer anschaun kann... schaut doch etwas komplex aus :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940701</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 16 Aug 2010 16:42:10 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 16:42:35 GMT]]></title><description><![CDATA[<pre><code>srand (timeGetTime ());
</code></pre>
<p>Diese Zeile nur einmal im Programm aufrufen, nicht fuer jedes Spiel neu. D.h hier:</p>
<pre><code class="language-cpp">int main() {
  srand (timeGetTime ());
  ..                       // dein restliches Programm
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1940702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940702</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 16 Aug 2010 16:42:35 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Tue, 17 Aug 2010 08:01:25 GMT]]></title><description><![CDATA[<p>Vielleicht wäre ein etwas &quot;c++&quot;iger Ansatz auch nett ... ich konnte mich nie mit struct's anfreunden.</p>
<p>- modelliere alle möglichen Karten<br />
- modelliere Spieler (2 slots) &amp;&amp; Geber (5 slots)<br />
- modelliere ein Deck<br />
-- implementiere Deck reset<br />
-- implementiere Deck mischen<br />
-- implementiere eine Karte aus Deck an Spieler geben<br />
modelliere eine Pokervariante die 1 Geber, n Spieler und 1 Deck verwaltet</p>
<p>Deck zB ähnlich wie<br />
<a href="http://wiki.forum.nokia.com/index.php/CS001142_-_Shuffling_data_using_STL_random_shuffle_algorithm" rel="nofollow">http://wiki.forum.nokia.com/index.php/CS001142_-_Shuffling_data_using_STL_random_shuffle_algorithm</a></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

#include &lt;vector&gt;
#include &lt;algorithm&gt;

namespace Cards {

    enum values {  Two=2,        Three,      Four,       Five,        Six,        Seven,      Eight,     Nine,     Ten,
                   Jack,        Queen,      King,       Ace
        };

    // spades (♠), hearts (♥), diamonds (♦) and clubs (♣)
    enum colors { Diamond = 1, Heart , Spade , Club };

    std::string name(int v = Cards::Two, int c = Cards::Diamond, bool shortName=false)
    {
        const std::string val[] = { &quot;Two&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;,&quot;Ace&quot; };
        const std::string col[] = { &quot;Diamond&quot;, &quot;Heart&quot;, &quot;Spade&quot;, &quot;Club&quot; };
        const std::string colS[] =  {&quot;♦&quot;, &quot;♥&quot;, &quot;♠&quot;, &quot;♣&quot;};
        const std::string valS[] =  {&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;J&quot;,&quot;Q&quot;,&quot;K&quot;,&quot;A&quot;};

        // short naming
        if (shortName)
            return &quot; &quot;+valS[v-Cards::Two]+colS[c-Cards::Diamond];

        // long names
        return val[v-Cards::Two] + &quot; of &quot; + col[c-Cards::Diamond] + &quot;s&quot;;
    }
};

class OneCard {
    bool isValid;
    int _value;
    int _color;
public:
    OneCard() : isValid(false),_value(0),_color(0) {};
    OneCard(int v, int c) :
            isValid(true), _value(v), _color(c)
    {}

    std::string name()      { if (isValid) return Cards::name(_value,_color);       else return &quot;&quot;; }
    std::string shortName() { if (isValid) return Cards::name(_value,_color,true);  else return &quot;&quot;; }

    int value() const { return _value;}
    int color() const {return _color;}
    bool valid() const {return isValid;}
};

class Deck {
    std::vector&lt;OneCard&gt; _deck;

public:
    Deck() : _deck(0)
    {
        _deck.reserve(52);
        for (int col = Cards::Diamond; col &lt;= Cards::Club; ++col)
        {
            for(int val=Cards::Two val &lt;= Cards::Ace; ++val)
            {
                _deck.push_back(OneCard(val,col));
            }
        }        

        std::cout &lt;&lt; &quot;Pack: &quot; &lt;&lt; std::endl;
        debug();
        shuffle();
        std::cout &lt;&lt; &quot;Shuffled: &quot; &lt;&lt; std::endl;

        debug();
    }

    void shuffle() { std::random_shuffle(_deck.begin(), _deck.end()); }

    void debug() {
        for (unsigned int i=0; i &lt; _deck.size(); ++i)
            std::cout &lt;&lt; _deck[i].shortName() &lt;&lt; &quot; &quot;;

        std::cout &lt;&lt; std::endl;
    }

    OneCard drawOne()
    {
        if (! _deck.empty())
        {
            OneCard card = _deck.back();
            _deck.pop_back();
            return card;
        } else return OneCard();  // invalid one
    }
} ;

class Player {
public:
    std::vector&lt;OneCard&gt; owns;
};

class Game {
    Deck deck;
    std::vector&lt;Player&gt; player;
    std::vector&lt;OneCard&gt; forAll;
public:
    Game(int playercount = 3, int cardcount = 2) : deck(Deck())
    {
        // create players
        for(int i=0; i&lt; playercount; ++i)
        {
            Player p;
            player.push_back(p);
        }

        // deal cards
        for (int cards=0; cards &lt; cardcount; ++cards)
            for(int i=0; i &lt; playercount; ++i)
            {
                player[i].owns.push_back(deck.drawOne());
            }

        debug();
    }

    void debug() {
        for(unsigned int i=0; i &lt; player.size(); ++i)
        {
            std::cout &lt;&lt; &quot;P: &quot; &lt;&lt;  i &lt;&lt; &quot;\tcards:   &quot;;

            for(unsigned int cards=0; cards &lt; player[i].owns.size(); ++cards)
                std::cout &lt;&lt; player[i].owns[cards].shortName() &lt;&lt; &quot; &quot; ;

            std::cout &lt;&lt; std::endl;
        }
        std::cout &lt;&lt; &quot;Next 5:\t&quot;;
        for (int ii=0;ii&lt;5;++ii) std::cout &lt;&lt; deck.drawOne().shortName() &lt;&lt; &quot; &quot;;
        std::cout &lt;&lt; std::endl;

    }
};

int main()
{
    srand(time(0));
    Game g(4,4);
}
</code></pre>
<p>edit: Muh³² ... sehr .... konstruktiv.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940731</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Tue, 17 Aug 2010 08:01:25 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Mon, 16 Aug 2010 19:49:09 GMT]]></title><description><![CDATA[<p>padreigh schrieb:</p>
<blockquote>
<p>Vielleicht wäre ein etwas &quot;c++&quot;iger Ansatz auch nett ... ich konnte mich nie mit struct's anfreunden.</p>
<p>- modelliere alle möglichen Karten<br />
- modelliere Spieler (2 slots) &amp;&amp; Geber (5 slots)<br />
- modelliere ein Deck<br />
-- implementiere Deck reset<br />
-- implementiere Deck mischen<br />
-- implementiere eine Karte aus Deck an Spieler geben<br />
modelliere eine Pokervariante die 1 Geber, n Spieler und 1 Deck verwaltet</p>
<p>Deck zB ähnlich wie<br />
<a href="http://wiki.forum.nokia.com/index.php/CS001142_-_Shuffling_data_using_STL_random_shuffle_algorithm" rel="nofollow">http://wiki.forum.nokia.com/index.php/CS001142_-_Shuffling_data_using_STL_random_shuffle_algorithm</a></p>
</blockquote>
<p>blaa blubb Modelier implementier und am ende braust du am besten alles nochmal neu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940762</guid><dc:creator><![CDATA[muh³²]]></dc:creator><pubDate>Mon, 16 Aug 2010 19:49:09 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Tue, 17 Aug 2010 07:12:26 GMT]]></title><description><![CDATA[<p>Gibt es keine 10?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1940831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940831</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 17 Aug 2010 07:12:26 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Tue, 17 Aug 2010 08:00:17 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Gibt es keine 10?</p>
</blockquote>
<p>Äöööhhmmm nee, ähh ja ... warn Test <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="😉"
    /> hab 4 Zeilen geändert, nun gibts ne 10 <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/1940854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1940854</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Tue, 17 Aug 2010 08:00:17 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Zufallszahlen aus Arraymenge on Thu, 19 Aug 2010 20:41:47 GMT]]></title><description><![CDATA[<p>Hmm ja danke padreigh erstmal für dein ellenlanges Programm aber sry xD Wie ich schon am include sehe benutzt du Sachen die ich noch nicht gelernt habe und von denen ich noch nichts verstehe xD Trotzdem danke für die Hilfe^^</p>
<p>So hab das System hinter dem Spiel verändert gibt nur noch einen Array der die Karten verwaltet und wer sich fragt: Hey? wo ist timegettime hin? das ist im Moment am Anfang von der main-Funktion.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;windows.h&gt;
#include &lt;stdlib.h&gt;

#pragma comment (lib, &quot;winmm.lib&quot;)

using namespace std;

#include &quot;Spiel.hpp&quot;

void Neuesspiel (int *pBigblind, int *pSmallblind, int *pRate, int *pSchwierigkeitsgrad,
				 int *pRunde)
{

	// Spielarrays

	system(&quot;cls&quot;);
	int AKarten [52];										// Karten Array

		// Array Infos:
		// Wert 0	=	Karte ist im Deck
		// Wert 1	=	Karte ist Spielerkarte 1
		// Wert 2	=	Karte ist Spielerkarte 2
		// Wert 3	=	Karte ist Gegnerkarte 1
		// Wert 4	=	Karte ist Gegnerkarte 2
		// Wert 5	=	Karte ist Mittekarte 1
		// Wert 6	=	Karte ist Mittekarte 2
		// Wert 7	=	Karte ist Mittekarte 3
		// Wert 8	=	Karte ist Mittekarte 4
		// Wert 9	=	Karte ist Mittekarte 5

	int *p_Karten = &amp;AKarten[0];						// Der Pointer des Karten Arrays

	for (int i=0; i &lt; 51; i++)		// Schleife um jede Karte auf &quot;0&quot; (Ist im Deck) zu schreiben
	{
		AKarten[i] = 0;
	}

	// Variabeln
	int iRueckgabezufall;

	// Erste Karte ausgeben und als die erste Spielerkarte angeben
	iRueckgabezufall = Zufallskarte (p_Karten);
	AKarten [iRueckgabezufall] = 1;

	for (int u=0; u &lt; 51; u++)
	{
		if (AKarten [u] == 1)
		{
			cout &lt;&lt; &quot;Das ist die &quot; &lt;&lt; u &lt;&lt; &quot; Position der ersten Spielerkarte.\n&quot;;
		}

	}
	iRueckgabezufall = 0;
	Sleep(500);
	// Zweite Karte ausgeben und als die Zweite Spielerkarte angeben
	iRueckgabezufall = Zufallskarte (p_Karten);
	AKarten [iRueckgabezufall] = 2;

	for (int u2=0; u2 &lt; 51; u2++)
	{
		if (AKarten [u2] == 2)
		{
			cout &lt;&lt; &quot;Das ist die &quot; &lt;&lt; u2 &lt;&lt; &quot; Position der zweiten Spielerkarte.\n&quot;;
		}

	}
	iRueckgabezufall = 0;
	Sleep(500);

}

int Zufallskarte (int  *p_Karten)
{
	int iWhileende = 0;		// Variable um die Schleife zu beenden

	do
	{
		int iZufall;		

		iZufall = (rand()%52);

		for (int i=0; i &lt; 51; i++)
		{
			if  (iZufall == i)
			{
				if (p_Karten [i] == 0)
				{
					iWhileende = 1;
					return i;
				}

			}
		}

	} while (iWhileende == 0);

	return 0;
}
</code></pre>
<p>Und hier nochmal die Header-Datei des Spiels:</p>
<pre><code class="language-cpp">// Headerdatei des eigentlichen Spiels

// Funktionen

void Neuesspiel (int *pBigblind, int *pSmallblind, int *pRate, int *pSchwierigkeitsgrad,
				 int *pRunde);

int Zufallskarte (int  *p_Karten);
</code></pre>
<p>Hmm wie ich gerade feststelle Funktioniert das Programm auf Zauberhafte Art xD auch mit mehr als 2 Karten^^ brauch nur noch eine Abfrage die das mehrfach aufkommen von Karten verhindert. ^^ Auch wenn irgendwie alles was ich Versucht habe mit eurer Hilfe nix gebracht hat und Das Programm nun Funktioniert wies soll, danke ich trotzdem vieeeeelllmals für die Hilfe von euch^^ Naja xD Programmieren ist und bleibt manchmal etwas seltsam xDDDDD</p>
<p>MFG _LiFeMaKeR_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1942186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1942186</guid><dc:creator><![CDATA[_LiFeMaKeR_]]></dc:creator><pubDate>Thu, 19 Aug 2010 20:41:47 GMT</pubDate></item></channel></rss>