<?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[Fehler im Code der nicht als Fehler markiert ist]]></title><description><![CDATA[<p>Nach der etwas komischen Überschrift hier das Problem:<br />
Ich bin recht neu in C++ und wollte mich nachdem ich einen Kurs besucht habe mal hinsetzten und etwas mehr oder weniger größeres (für mich) in Angrif nehmen. Und zwar ich benutze dev c++ und programmiere zur Zeit noch in der Konsolen Anwendung. Ich wollte ein kleines Kartenspiel (ohne Grafik) programmieren. So ich habe alle Karten als Felder in einem string gespeichert.Und dann nach dem Zufallsprizip dem Spieler 8Karten gegeben. Funktioniert alles super. Nun wollte ich einen Computer Spieler einbauen der auch 8 Karten bekommt.Wobei diese natürlich andere Karten als die vom Spieler sein sollten. Hier der Code:</p>
<pre><code class="language-csharp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;ctime&gt;

using namespace std;

string Computer1_Karten ()
{    
     string Karte [51];
     Karte[0] = &quot;Pik Ass&quot;;
    Karte[1] = &quot;Pik Koenig&quot;;
    Karte[2] = &quot;Pik Dame&quot;;
    Karte[3] = &quot;Pik Bube&quot;;
...
    Karte[51] = &quot;Herz Ass&quot;;
    time_t t;
    srand(time(&amp;t));

        int b = rand() % 51;
       string Computer1_Karte = Karte[b];

        return(Computer1_Karte);     
}
string Karten_Spieler (int a)
{    
    string Karte [51]; // hier werden alle 52Karten aufgezählt
    Karte[0] = &quot;Pik Ass&quot;;
    Karte[1] = &quot;Pik Koenig&quot;;
...
    Karte[51] = &quot;Herz Ass&quot;;
    time_t t;
    srand(time(&amp;t));

    string Karten_Spieler = &quot;&quot;;

    do
    {  

        int b = rand() % 51;
        //Überprüfung ob die Karte schon vergeben sind
        if(Karten_Spieler.find(Karte[b])==string::npos)
        {
        a=a-1;
        Karten_Spieler.append(Karte[b]);
        Karten_Spieler.append(&quot;, &quot;);
        }

        }while(a &gt; 0); 
        return(Karten_Spieler);      
}

int main(int argc, char *argv[])
{
    int anfang; //Jetzt kommt cout&lt;&lt;Text....(Unwichtig)
cin&gt;&gt;anfang;

    if (anfang == 1)
    {
               string a = Karten_Spieler(8);
          cout&lt;&lt;a&lt;&lt;endl;
          string c = &quot;&quot;;

         int d = 8;
          //Überprüfung des Computers
          do
          {

                        string b = Computer1_Karten();
                        if (a.find(b)==string::npos &amp;&amp; c.find(b)==string::npos)
                        {
                           c.append(b);
                           c.append(&quot;, &quot;);
                           d = d - 1;
                        }
          }while(d&gt;0);
          cout&lt;&lt;c&lt;&lt;endl;

    }
    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>So das ist mein problem-Code. Bei mir wird keine Fehlermeldung in dev rausgegebn (wüsste auch nicht wieso)aber beim straten des Programms wenn ich 1 eingeben sollte er die Kartenverteilung starten und anzeigen Die Karten des Spieler zeigt er auch an. Doch dann kommt eine Fehlermeldung von Windows (Poblem senden ,nicht senden kennt glaub ich jeder) So der Fehler müsste ja eig. im Code sein. Nur ich weis halt nicht wo und weis auch nicht warum mir dev diesen Fehler nicht kennzeichnet.^^ So kann sein das dies ein einfaches Problem ist und ich es einfach übersehenhabe oder es noch nicht nach meinem Wissenstandt aus anderes machen konnte. Also bitte helft mir.</p>
<p>lg</p>
<p>Walter</p>
<p>P.S. Also falls ich diesen Beitrag im falschem Forum gepostet habt sei mir das bitte nachgesehen (wusste nicht recht borland oder hier oder woanders^^) und kann einfach verschoben werden^^</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220840/fehler-im-code-der-nicht-als-fehler-markiert-ist</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 15:06:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220840.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Aug 2008 19:01:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Thu, 21 Aug 2008 19:01:15 GMT]]></title><description><![CDATA[<p>Nach der etwas komischen Überschrift hier das Problem:<br />
Ich bin recht neu in C++ und wollte mich nachdem ich einen Kurs besucht habe mal hinsetzten und etwas mehr oder weniger größeres (für mich) in Angrif nehmen. Und zwar ich benutze dev c++ und programmiere zur Zeit noch in der Konsolen Anwendung. Ich wollte ein kleines Kartenspiel (ohne Grafik) programmieren. So ich habe alle Karten als Felder in einem string gespeichert.Und dann nach dem Zufallsprizip dem Spieler 8Karten gegeben. Funktioniert alles super. Nun wollte ich einen Computer Spieler einbauen der auch 8 Karten bekommt.Wobei diese natürlich andere Karten als die vom Spieler sein sollten. Hier der Code:</p>
<pre><code class="language-csharp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;ctime&gt;

using namespace std;

string Computer1_Karten ()
{    
     string Karte [51];
     Karte[0] = &quot;Pik Ass&quot;;
    Karte[1] = &quot;Pik Koenig&quot;;
    Karte[2] = &quot;Pik Dame&quot;;
    Karte[3] = &quot;Pik Bube&quot;;
...
    Karte[51] = &quot;Herz Ass&quot;;
    time_t t;
    srand(time(&amp;t));

        int b = rand() % 51;
       string Computer1_Karte = Karte[b];

        return(Computer1_Karte);     
}
string Karten_Spieler (int a)
{    
    string Karte [51]; // hier werden alle 52Karten aufgezählt
    Karte[0] = &quot;Pik Ass&quot;;
    Karte[1] = &quot;Pik Koenig&quot;;
...
    Karte[51] = &quot;Herz Ass&quot;;
    time_t t;
    srand(time(&amp;t));

    string Karten_Spieler = &quot;&quot;;

    do
    {  

        int b = rand() % 51;
        //Überprüfung ob die Karte schon vergeben sind
        if(Karten_Spieler.find(Karte[b])==string::npos)
        {
        a=a-1;
        Karten_Spieler.append(Karte[b]);
        Karten_Spieler.append(&quot;, &quot;);
        }

        }while(a &gt; 0); 
        return(Karten_Spieler);      
}

int main(int argc, char *argv[])
{
    int anfang; //Jetzt kommt cout&lt;&lt;Text....(Unwichtig)
cin&gt;&gt;anfang;

    if (anfang == 1)
    {
               string a = Karten_Spieler(8);
          cout&lt;&lt;a&lt;&lt;endl;
          string c = &quot;&quot;;

         int d = 8;
          //Überprüfung des Computers
          do
          {

                        string b = Computer1_Karten();
                        if (a.find(b)==string::npos &amp;&amp; c.find(b)==string::npos)
                        {
                           c.append(b);
                           c.append(&quot;, &quot;);
                           d = d - 1;
                        }
          }while(d&gt;0);
          cout&lt;&lt;c&lt;&lt;endl;

    }
    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>So das ist mein problem-Code. Bei mir wird keine Fehlermeldung in dev rausgegebn (wüsste auch nicht wieso)aber beim straten des Programms wenn ich 1 eingeben sollte er die Kartenverteilung starten und anzeigen Die Karten des Spieler zeigt er auch an. Doch dann kommt eine Fehlermeldung von Windows (Poblem senden ,nicht senden kennt glaub ich jeder) So der Fehler müsste ja eig. im Code sein. Nur ich weis halt nicht wo und weis auch nicht warum mir dev diesen Fehler nicht kennzeichnet.^^ So kann sein das dies ein einfaches Problem ist und ich es einfach übersehenhabe oder es noch nicht nach meinem Wissenstandt aus anderes machen konnte. Also bitte helft mir.</p>
<p>lg</p>
<p>Walter</p>
<p>P.S. Also falls ich diesen Beitrag im falschem Forum gepostet habt sei mir das bitte nachgesehen (wusste nicht recht borland oder hier oder woanders^^) und kann einfach verschoben werden^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569163</guid><dc:creator><![CDATA[Walter S.]]></dc:creator><pubDate>Thu, 21 Aug 2008 19:01:15 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Thu, 21 Aug 2008 19:14:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">string Karte [51]; // hier werden alle 52Karten aufgezählt
</code></pre>
<p>Warum dann 51?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569168</guid><dc:creator><![CDATA[einmal das]]></dc:creator><pubDate>Thu, 21 Aug 2008 19:14:06 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Thu, 21 Aug 2008 19:15:26 GMT]]></title><description><![CDATA[<p>string Arrays fangen doch bei 0 an und deshalb nicht 52 sonder nur 51 oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569170</guid><dc:creator><![CDATA[Walter S.]]></dc:creator><pubDate>Thu, 21 Aug 2008 19:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Thu, 21 Aug 2008 19:18:02 GMT]]></title><description><![CDATA[<p>Walter S. schrieb:</p>
<blockquote>
<p>string Arrays fangen doch bei 0 an und deshalb nicht 52 sonder nur 51 oder nicht?</p>
</blockquote>
<p>Ja, aber die Anzahl muss schon stimmen. Du musst 52 Einheiten haben. Die fangen dann bei 0 an und gehen bis und mit 51.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569173</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 21 Aug 2008 19:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Thu, 21 Aug 2008 19:18:15 GMT]]></title><description><![CDATA[<p>Zugriff auf das (N-x)-te Element eines Arrays der Größe N ( int array[N] ) geschieht durch array[N-x-1]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569174</guid><dc:creator><![CDATA[schau dir array an]]></dc:creator><pubDate>Thu, 21 Aug 2008 19:18:15 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Thu, 21 Aug 2008 19:42:55 GMT]]></title><description><![CDATA[<p>ok vielen dank^^. Tja immer diese kleinen Fehler.^^ Es funktioniert, nur bevor die Karten des Computers anzeigt braucht der so 5sek. ist das normal? oder wie kann ich den code optiemieren? habe es herausgefunden. mAlso nochmals viele dank^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569176</guid><dc:creator><![CDATA[Walter S.]]></dc:creator><pubDate>Thu, 21 Aug 2008 19:42:55 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Thu, 21 Aug 2008 22:39:05 GMT]]></title><description><![CDATA[<p>Walter S. schrieb:</p>
<blockquote>
<p>Es funktioniert, nur bevor die Karten des Computers anzeigt braucht der so 5sek. ist das normal?</p>
</blockquote>
<p>Kaum. Selbst im Debugmodus sollte es schneller sein. Hast du schon das Codestück mit der Zeitverschwendung lokalisieren können? Mit Debugger und Haltepunkten sollte das nicht schwer sein...</p>
<p>Übrigens: In deinem folgenden Code-Stück steht der Bezeichner <code>Karten_Spieler</code> sowohl für die Funktion als auch für die Variable vom Typ <code>std::string</code> . Ich nehm mal an, das ist ein Kopierfehler...</p>
<pre><code class="language-cpp">string Karten_Spieler (int a)
{
    string Karten_Spieler = &quot;&quot;;
    // ...
        return(Karten_Spieler);
}
</code></pre>
<p>Und den Fehler mit 51 statt 52 musst du auch noch an anderen Orten korrigieren, z.B. hier:</p>
<pre><code class="language-cpp">int b = rand() % 51;
</code></pre>
<p>Und nimm doch C++- anstatt C#-Codetags <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/1569256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569256</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 21 Aug 2008 22:39:05 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Fri, 22 Aug 2008 13:03:39 GMT]]></title><description><![CDATA[<p>Habe den Teil der die Zeitverschwenugn vervorreif gefunden:</p>
<pre><code class="language-cpp">string b = Computer1_Karten(); 
                        if (a.find(b)==string::npos &amp;&amp; c.find(b)==string::npos) 
                        { 
                           c.append(b); 
                           c.append(&quot;, &quot;); 
                           d = d - 1; 
                        }
</code></pre>
<p>Habe dadurch das ich die einzelnen Karten von diesem Computer erst in der main funktion überprüft habe sehr viel Zeit verloren. Außerdem habe ich noch folgendes Problem: Habe die Karten nach folgdem Prinzip ausgesucht:<br />
1.Zufaallzahl erzeugen.<br />
2. Das jeweilige string feld suchen<br />
3. Überprüfen ob diese string feld schon vorhanden war. Falls ja das ganze von vorne.</p>
<p>Das ist schlecht. Denn jeweniger karten es zum Schluss gibt desto llänger braucht er um welche zufinden die er nicht hat. Mitlerwiele habe ich alle Karten unter diesen 4Spielern aufgeteilt 52Karten/4 = 13. Bei dem letzden Computer habe ich schon gesagt das er die felder alle durchlaufern soll und die er noch nicht hat ausgeben.</p>
<p>Schneller wäre. Diese String felder. Nach dem jeweiligen Benutzen zu (löschen) oder so kenntlich zumachen das er bei diesem Zufallsprinzip der Karten auswahl nicht mehr auf diese Karte kommen kann. Bsp:<br />
string Karte[9] = &quot;Pik Acht&quot;<br />
so diese Karte würde dann ausgegeben aber dieses String feld soll bei der nächsten Auswahl nicht mehr berücksichtigt werden.</p>
<p>So das mit dem Karten_Spieler ist kein Kopier fehler Ich aknn es schnell ändern wenn das so schlecht ist. Aber vllt kurz sagen warum das so ist damit ich auch was lerne.</p>
<p>So 2Fragen habe ich noch kann ich ein array als rückgabe wert haben (ich glaube schon) und kann ich z.B. einen string und einen int wert zurückgeben und wenn ja wie speichere ich den dann in der Main funktion.</p>
<pre><code class="language-cpp">int a;
string b;
return(a,b);
</code></pre>
<p>So in der art nur ist halt die Frage was ich dann vor die Funktion schreibe also welchen Rückgabetyp.</p>
<p>Schon mal danke fürs lesen^^ und evtl. antowrten</p>
<p>lg</p>
<p>walter</p>
<p>P.S. Das mit dem C# code ist mir peinlich... <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/1569617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569617</guid><dc:creator><![CDATA[Walter S.]]></dc:creator><pubDate>Fri, 22 Aug 2008 13:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Fri, 22 Aug 2008 13:28:18 GMT]]></title><description><![CDATA[<blockquote>
<p>So 2Fragen habe ich noch kann ich ein array als rückgabe wert haben (ich glaube schon) und kann ich z.B. einen string und einen int wert zurückgeben und wenn ja wie speichere ich den dann in der Main funktion.</p>
</blockquote>
<p>Ein Array kannst du nicht zurückgeben. Du kannst höchstens einen Zeiger auf das Array zurückgebeb, musst dann aber schauen, dass du das auf Speicher machst, welcher auch reserviert bleibt. (new)</p>
<p>Ansonsten musst du einen Zeiger an die Funktion übergeben.</p>
<blockquote>
<p>return(a,b);</p>
</blockquote>
<p>Das funktioniert so schon, aber es macht nicht das, was du denkst. <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="😉"
    /><br />
Du wendest den , - Operator an. In wirklichkeit wird aber lediglich a zurückgegeben, was ein int ist.</p>
<p>Wenn du aber einen std::vector nimmst, anstatt eines eines Arrays, kannst du auch einen vector zurückegeben, welcher dann einfach kopiert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569637</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 22 Aug 2008 13:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Fri, 22 Aug 2008 13:32:49 GMT]]></title><description><![CDATA[<p>Walter S. schrieb:</p>
<blockquote>
<p>So das mit dem Karten_Spieler ist kein Kopier fehler Ich aknn es schnell ändern wenn das so schlecht ist. Aber vllt kurz sagen warum das so ist damit ich auch was lerne.</p>
</blockquote>
<p>Naja, mehrdeutige Bezeichner sind nicht gut. Das könnte zu Namenskonflikten führen. Ausserdem solltest du die Funktionen genau nach dem benennen, was sie tun. Zum Beispiel <code>MischeKarten()</code> oder ähnlich, je nach Funktion halt.</p>
<p>Walter S. schrieb:</p>
<blockquote>
<p>So 2Fragen habe ich noch kann ich ein array als rückgabe wert haben (ich glaube schon)</p>
</blockquote>
<p>Nein. Das heisst, du kannst zwar den Zeiger zurückgeben, aber der ist dann nicht mehr gültig.</p>
<p>Walter S. schrieb:</p>
<blockquote>
<p>und kann ich z.B. einen string und einen int wert zurückgeben und wenn ja wie speichere ich den dann in der Main funktion.</p>
</blockquote>
<p>Da gibt es mehrere Möglichkeiten:</p>
<p><strong>1. Übergabe per Referenz.</strong> Die Argumente werden nicht kopiert, sondern direkt übergeben. Das heisst, sie können auch von der Funktion verändert werden.</p>
<pre><code class="language-cpp">void func(int&amp; i, std::string&amp; s) // &amp; bedeutet Referenz
{
   i = 4;
   s = &quot;Hallo&quot;;
}

int main()
{
    int IntVar;
    std::string StringVar;
    func(IntVar, StringVar);
    // hier haben die Variablen die Werte 4 bzw. &quot;Hallo&quot;
}
</code></pre>
<p><strong>2. Übergabe als Zeiger.</strong> Ähnlich wie die Übergabe als Referenz, nur dass du eben mit Zeiger statt Referenzen arbeitest.</p>
<pre><code class="language-cpp">void func(int* i, std::string* s) // * bedeutet Zeiger
{
   *i = 4;
   *s = &quot;Hallo&quot;;
}

int main()
{
    int IntVar;
    std::string StringVar;
    func(&amp;IntVar, &amp;StringVar); // Adressen übergeben (&amp; ist Adressoperator)
    // hier haben die Variablen die Werte 4 bzw. &quot;Hallo&quot;
}
</code></pre>
<p><strong>3. Rückgabe einer Struktur.</strong> Du erstellst einen Datentyp, der einen Integer und einen String speichert.</p>
<pre><code class="language-cpp">struct Data
{
    int i;
    std::string s;
};

Data func() // func gibt einen Wert vom selbstdefinierten Typ Data zurück
{
    Data MyData = {4, &quot;Hallo&quot;}; // Temporäre Instanz erstellen
    return MyData;              // diese zurückgeben
}

int main()
{
   Data D = func();
   int IntVar = D.i;             // Zugriff auf Strukturelemente
   std::string StringVar = D.s;
}
</code></pre>
<p>Walter S. schrieb:</p>
<blockquote>
<p>P.S. Das mit dem C# code ist mir peinlich... <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>
</blockquote>
<p>Oh, ist doch kein Problem. Hier gibts viel Schlimmeres, z.B. Leute, die immer noch ohne irgendeine Formatierung ihren Code aufschreiben, obwohl es ihnen schon mehrfach gesagt wurde <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>Ich würde dir zum Einsatz der STL raten, das vereinfacht einiges. Da gibt es Container, die sich wie dynamische Arrays verhalten, aber noch zusätzliche Funktionen und Vereinfachungen bieten. Ein Beispiel ist der <code>std::vector</code> . So ein Vector kann im Gegensatz zu Arrays auch Rückgabetyp einer Funktion sein.<br />
Es gibt auch einen STL-Algorithmus <code>std::random_shuffle()</code> , der einen solchen Container (oder auch ein Array) zufällig durchmischt. Damit wär auch dein Performanceproblem gelöst. Aber ich weiss nicht, wie weit du schon in C++ gekommen bist, vielleicht ist es auch noch besser, damit zu warten.</p>
<p>Walter S. schrieb:</p>
<blockquote>
<p>Habe die Karten nach folgdem Prinzip ausgesucht:<br />
1.Zufaallzahl erzeugen.<br />
2. Das jeweilige string feld suchen<br />
3. Überprüfen ob diese string feld schon vorhanden war. Falls ja das ganze von vorne.</p>
</blockquote>
<p>Was meinst du mit &quot;das ganze&quot;? Den gesamten Algorithmus neu starten? Wenn ja, wunderts mich nicht, dass das so lange geht. Du solltest die vorherigen Elemente so belassen, und wenn eines schon vorgekommen ist, halt nur genau das noch einmal suchen. Dann sollte es bei nur 52 Elementen eigentlich nicht so lange dauern.</p>
<p>Aber du hast natürlich Recht, die Zeitkomplexität dieses Algorithmus ist sehr schlecht (exponentiell). Eine Funktion, die zuverlässig zufällige Permutationen erzeugt, ist auch nicht gerade einfach. Falls dich das Thema interessiert, kannst du dich <a href="http://de.wikipedia.org/wiki/Linearer_Kongruenzgenerator" rel="nofollow">hier</a> genauer informieren, ansonsten solltest du entweder halt den bisherigen Algorithmus in Kauf nehmen oder <code>std::random_shuffle()</code> benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569643</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 22 Aug 2008 13:32:49 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Code der nicht als Fehler markiert ist on Fri, 22 Aug 2008 16:51:31 GMT]]></title><description><![CDATA[<p>So fange ich mal an^^.</p>
<p>Ok mit dem Nameskonflikt ist mir einleuchtend^^ Habe es soweit mal geändert. Mit den arrays ist i-wie schade^^.Ok werde die 3 Möglichkeiten noch ausprobieren. Und mich dann für eine Entscheiden. Das STl hört sich interesaant an nur ich habe diesen Sommer einen workshop für c++ gemacht da wurden halt Hauptfunktion/Kommentare/Ein-und ausgabe, Varablen,Operatorn(Grundrechenarten,Modulo), Verzweigungen( Vergleichs-logische Operatoren), Schleifen, Zufallszahlen, arrays ,klasse string besprochen nun habe ich im herbst halt noch mal ein workshop und ich will halt vorher noch nicht so viel vorweg nehmen sonst brauch ich den kurs ja net zu bezahlen wenn ich da von schon was kann^^. Deshalb möchte ich noch nichtso viel neues machen <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="🙂"
    /> Aber ich sehe hier kommen auf jeden fall sehr viele ideen von leuten die sich gedanken machen^^. Find ich toll... habe schon andere Foren erlebt.</p>
<p>Mit dem ganzen meine ich das er wenn er beim 3 Punkt bin und er die zahl schon hat wieder bei 1 anfängt. D.h. es könnte passieren das er wieder diese Zahl bekommt^^ und wieder von vorne anfangen muss, weil diese Zahl ja noch im string array mit drin ist und nicht außen vorgelassen wird. Von der Zeit her muss ich sagen das es momentan bei 52 elementen sofort klappt. Ohne das ein merkbarer zeitverlust besteht. (fürs auge erkennbar)</p>
<p>ansonsten schon danke für die tipps^^ kann sein das ich im laufe dieses Projekts mich nochmal melde^^. Weeril habe bis jetzt ja nur die Kartenverteilung jetzt mussnoch ein bischen KI ins Spiel kommen. Hat da jemand einen Tipp für mich ich könnte zwar lauter if-Sätze machen aber meine Frage ist geht das auch schneller oder soll ich lieber mit meinen kenntnissen if sätze schreiben. Kurz zum Sinn des Spiels 52Kartenspiel, Pik ist Trumpffarbe, Man muss immer bedienen, duie hörere Karte gewinnt oder halt trumpf wer am ende die meisten stiche hat gewinnt. (Alles andere wäre ein bischen zu hoch gegriffen glaube ich mal)^^</p>
<p>lg</p>
<p>walter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569756</guid><dc:creator><![CDATA[Walter S.]]></dc:creator><pubDate>Fri, 22 Aug 2008 16:51:31 GMT</pubDate></item></channel></rss>