<?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[Konsolen Memorie]]></title><description><![CDATA[<p>Hallo erstmal. Ich bin dran ein memorie in der konsole zu programmieren. bin eigentlich schon fast fertig nur habe ich seit anfang an immer noch ein kleines problem. wie jeder wissen sollte gibt es ja beim memorie immer nur genau zwei gleiche karten. und das ist auch mein problem, den diese sollten bei mir über ne rand function generiert werden. Naja sollte hald.<br />
Hier is mal der Teilcode:</p>
<pre><code class="language-cpp">bool karteneu()
{
        int d=0;
	ergebniss = true;
	  while(d&lt;16)
                       {
                               if(zahl == karte[d])
                               {
                               ergebniss = false;
                               }
                       d++;
                       }

	return ergebniss;

}

void kartengeben()
{
     for(int i=0; i&lt;=15;i++)
     {
      karte[i] = 0;
     }

     srand( (unsigned) time(NULL) ) ;
            for(int i=0; i&lt;=15; i++)
            {

            zahl =  rand()%90;

                if(zahl &lt; 82)
                {
                i--;
                }
                else
                {
                       karteneu();
                       if(ergebniss == false)
                       {
                       i--;
                       }
                       else
                       {
                       karte[i]=char(zahl);
                       cout &lt;&lt;i&lt;&lt;karte[i]&lt;&lt;&quot;   &quot;;
                       }
                }
     }
     cout &lt;&lt;&quot;\n&quot;;
     cout &lt;&lt;&quot;\n&quot;;
     cout &lt;&lt;&quot;\n&quot;;
}
</code></pre>
<p>Hoff ihr könnt mir helfen</p>
<p>mfg 1009927</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217599/konsolen-memorie</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 16:18:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217599.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Jul 2008 07:50:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 07:50:16 GMT]]></title><description><![CDATA[<p>Hallo erstmal. Ich bin dran ein memorie in der konsole zu programmieren. bin eigentlich schon fast fertig nur habe ich seit anfang an immer noch ein kleines problem. wie jeder wissen sollte gibt es ja beim memorie immer nur genau zwei gleiche karten. und das ist auch mein problem, den diese sollten bei mir über ne rand function generiert werden. Naja sollte hald.<br />
Hier is mal der Teilcode:</p>
<pre><code class="language-cpp">bool karteneu()
{
        int d=0;
	ergebniss = true;
	  while(d&lt;16)
                       {
                               if(zahl == karte[d])
                               {
                               ergebniss = false;
                               }
                       d++;
                       }

	return ergebniss;

}

void kartengeben()
{
     for(int i=0; i&lt;=15;i++)
     {
      karte[i] = 0;
     }

     srand( (unsigned) time(NULL) ) ;
            for(int i=0; i&lt;=15; i++)
            {

            zahl =  rand()%90;

                if(zahl &lt; 82)
                {
                i--;
                }
                else
                {
                       karteneu();
                       if(ergebniss == false)
                       {
                       i--;
                       }
                       else
                       {
                       karte[i]=char(zahl);
                       cout &lt;&lt;i&lt;&lt;karte[i]&lt;&lt;&quot;   &quot;;
                       }
                }
     }
     cout &lt;&lt;&quot;\n&quot;;
     cout &lt;&lt;&quot;\n&quot;;
     cout &lt;&lt;&quot;\n&quot;;
}
</code></pre>
<p>Hoff ihr könnt mir helfen</p>
<p>mfg 1009927</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543953</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jul 2008 07:50:16 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 07:55:08 GMT]]></title><description><![CDATA[<p>Wo sind die Definitionen von ergebnis, zahl und karte? Warum ist die Einrückung so komisch? Achja, und wie lautet überhaupt die Frage?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543954</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 09 Jul 2008 07:55:08 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 08:00:04 GMT]]></title><description><![CDATA[<p>o.k hier mal der ganze code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;math.h&gt;
#include &lt;string.h&gt;
#include &lt;conio.h&gt;
#include &lt;dos.h&gt;
#include &lt;stdio.h&gt;

using namespace std;

char verdeckt[16];
char karte[16];
int probe[16];
int zahl,nummer1,g,nummer2,x,punkte1,punkte2;
bool ergebniss;

bool karteneu()
{
        int d=0;
	ergebniss = true;
	  while(d&lt;16)
                       {
                               if(zahl == karte[d])
                               {
                               ergebniss = false;
                               }
                       d++;
                       }

	return ergebniss;

}

void kartengeben()
{
     for(int i=0; i&lt;=15;i++)
     {
      karte[i] = 0;
     }

     srand( (unsigned) time(NULL) ) ;
            for(int i=0; i&lt;=15; i++)
            {

            zahl =  rand()%90;

                if(zahl &lt; 82)
                {
                i--;
                }
                else
                {
                       karteneu();
                       if(ergebniss == false)
                       {
                       i--;
                       }
                       else
                       {
                       karte[i]=char(zahl);
                       cout &lt;&lt;i&lt;&lt;karte[i]&lt;&lt;&quot;   &quot;;
                       }
                }
     }
     cout &lt;&lt;&quot;\n&quot;;
     cout &lt;&lt;&quot;\n&quot;;
     cout &lt;&lt;&quot;\n&quot;;
}

void versuch()
{
 for(int i=0; i&lt;=15; i++)
 {
 probe[i]=0;
 }
}

void spielfeld()
{

     int i=0;
     cout &lt;&lt;&quot;\n&quot;;
     cout &lt;&lt;&quot;\n&quot;;
     cout &lt;&lt;&quot;\n&quot;;
     cout &lt;&lt;&quot;    &quot;&lt;&lt;&quot;1&quot;&lt;&lt;&quot;   &quot;&lt;&lt;&quot;2&quot;&lt;&lt;&quot;   &quot;&lt;&lt;&quot;3&quot;&lt;&lt;&quot;   &quot;&lt;&lt;&quot;4&quot;&lt;&lt;endl;
     cout &lt;&lt;&quot;\n&quot;;
     for(int a=0; a&lt;=3; a++)
     {
      cout &lt;&lt;a+1&lt;&lt;&quot;   &quot;&lt;&lt;verdeckt[i]&lt;&lt;&quot;   &quot;&lt;&lt;verdeckt[i+1]&lt;&lt;&quot;   &quot;
      &lt;&lt;verdeckt[i+2]&lt;&lt;&quot;   &quot;&lt;&lt;verdeckt[i+3]&lt;&lt;&quot;   &quot;&lt;&lt;endl;
      cout &lt;&lt;&quot;\n&quot;;
      i=i+4;
     }
}

void zug1()
{
     int i=0;
     cout &lt;&lt;&quot;Nummer: &quot;;
     cin &gt;&gt;nummer1;
     while(i&lt;=1)
     {
      if(probe[nummer1-1] != 1)
      {
       verdeckt[nummer1-1] = karte[nummer1-1];
       i=2;
      }
      else
      {
       cout &lt;&lt;&quot;Nummer: &quot;;
       cin &gt;&gt;nummer1;
      }
     }

}

void zug2()
{
     int i=1;
     while(i&lt;=1)
     {
      cout &lt;&lt;&quot;Nummer: &quot;;
      cin &gt;&gt;nummer2;
      if(probe[nummer2-1] != 1)
      {
       if(nummer2 != nummer1)
       {
        verdeckt[nummer2-1] = karte[nummer2-1];
        i = 2;
       }
      }

     }

}

  int main()
{

      versuch();
      punkte1 = 0;
      punkte2 = 0;
      verdeckt[0]=char(176);
      for(int i=0; i&lt;=15; i++)
             {
             verdeckt[i]=verdeckt[0];
             }
      kartengeben();

      for(int a=0; a &lt;= 20; a++)
      {
              g=0;
              while(g&lt;=0)
              {
               _sleep(1);
               clrscr();
               cout &lt;&lt;&quot;Spieler 1&quot;&lt;&lt;endl;
               cout &lt;&lt;&quot;Punkte: &quot;&lt;&lt;punkte1;
               spielfeld();
               zug1();
               clrscr();
               cout &lt;&lt;&quot;Spieler 1&quot;&lt;&lt;endl;
               cout &lt;&lt;&quot;Punkte: &quot;&lt;&lt;punkte1;
               spielfeld();
               zug2();
               clrscr();
               spielfeld();
               _sleep(2);
               clrscr();
               cout &lt;&lt;&quot;Spieler 1&quot;&lt;&lt;endl;
               cout &lt;&lt;&quot;Punkte: &quot;&lt;&lt;punkte1;
               spielfeld();
               g++;
               if(karte[nummer1-1] == karte[nummer2-1])
               {
                verdeckt[nummer1-1] = karte[nummer1-1];
                verdeckt[nummer2-1] = karte[nummer2-1];
                probe[nummer2-1] = 1;
                probe[nummer1-1] = 1;
                punkte1 = punkte1 +1;
               }
               else
               {
                verdeckt[nummer1-1]=char(176);
                verdeckt[nummer2-1]=char(176);
               }
              }

              while(g&lt;=1)
              {
               clrscr();
               cout &lt;&lt;&quot;Spieler 2&quot;&lt;&lt;endl;
               cout &lt;&lt;&quot;Punkte: &quot;&lt;&lt;punkte2;
               spielfeld();
               zug1();
               clrscr();
               cout &lt;&lt;&quot;Spieler 2&quot;&lt;&lt;endl;
               cout &lt;&lt;&quot;Punkte: &quot;&lt;&lt;punkte2;
               spielfeld();
               zug2();
               clrscr();
               spielfeld();
               _sleep(2);
               clrscr();
               cout &lt;&lt;&quot;Spieler 2&quot;&lt;&lt;endl;
               cout &lt;&lt;&quot;Punkte: &quot;&lt;&lt;punkte2;
               spielfeld();
               g++;
               if(karte[nummer1-1] == karte[nummer2-1])
               {
                verdeckt[nummer1-1] = karte[nummer1-1];
                verdeckt[nummer2-1] = karte[nummer2-1];
                probe[nummer2-1] = 1;
                probe[nummer1-1] = 1;
                punkte2 = punkte2 + 1;
               }
               else
               {
                verdeckt[nummer1-1]=char(176);
                verdeckt[nummer2-1]=char(176);
               }
              }
      if(punkte1 + punkte2 == 8)
      {

      clrscr();
      }
      if(punkte1 &gt; punkte2)
      {
       cout &lt;&lt;&quot;Spieler 1 hat gewonnen&quot;;
      }
      if(punkte2 &gt; punkte1)
      {
       cout &lt;&lt;&quot;Spieler 2 hat gewonnen&quot;;
      }
      if(punkte1 == punkte2)
      {
       cout &lt;&lt;&quot;Unentschieden. Beide Spieler haben gleich viele Punkte&quot;;
      }
      }
      system(&quot;pause&quot;);

      cin.get();
}
</code></pre>
<p>joa n bisschen komisch sieht er ganz klar aus. mein problem ist das ich es nicht hinkriege das er mir jeden der 8 buchstaben nur zwei mal nimmt so das es genau aufgeht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543959</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jul 2008 08:00:04 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 08:00:15 GMT]]></title><description><![CDATA[<p>und das spiel heisst &quot;memory&quot; oder? eine memorie is was anders...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543960</guid><dc:creator><![CDATA[hephaistos6]]></dc:creator><pubDate>Wed, 09 Jul 2008 08:00:15 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 08:01:50 GMT]]></title><description><![CDATA[<p>soll memory heissen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1543962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1543962</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jul 2008 08:01:50 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 09:42:49 GMT]]></title><description><![CDATA[<p>Das hier wird dein Problem nicht lösen, aber eine kleine (eigentlich große) Unschönheit:<br />
In der Funktion &quot;kartengeben&quot; hast du folgendes stehen:</p>
<pre><code class="language-cpp">karteneu();
if (ergebniss == false) 
    ....
</code></pre>
<p>Und in der Funktion &quot;karteneu&quot; wird die globale bool-Variable &quot;ergebniss&quot; (schreibt man übrigens nur mit einem 's' ;)) gesetzt.</p>
<p>Weitaus eleganter und sinnvoller und was weiß ich wäre es, wenn du die globale Variable &quot;ergebniss&quot; streichst und das Ganze etwa so löst:</p>
<pre><code class="language-cpp">bool karteneu()
{
    for ( int d=0; d&lt;16; d++ )
    {
        if ( zahl == karte[d] )
            return false; // Hier wird direkt schon aus der Funktion zurückgesprungen.
    }
    return true;
}

...

void kartengeben()
{
    ...
    if ( ! karteneu() ) // Hier wird der Rückgabewert der Funktion abgefragt und entsprechend in den if-Teil gesprungen oder auch nicht.
    {
        ...
    }
    ...
}
</code></pre>
<p>So benutzt du dann nämlich auch den Rückgabewert der Funktion &quot;karteneu&quot;.</p>
<p>PS: Das Ausrufezeichen bei <code>if ( ! karteneu() )</code> heißt soviel wie <code>if ( karteneu() == false )</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544026</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 09 Jul 2008 09:42:49 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 10:26:56 GMT]]></title><description><![CDATA[<p>Ein Azubi bei uns hat mal folgende Funktion geschrieben:</p>
<pre><code class="language-cpp">//fuer Memory sollte numCards eine gerade Zahl sein, sonst bleibt eine Karte ueber
//fuellt cardArray mit numCards gemischten Karten.
void newCards(char* cardArray, size_t numCards)
{
    //erzeugt Folge : a a b b c c ...
    for(size_t n = 0; n != numCards; ++n)
    {
        cardArray[n] = static_cast&lt;char&gt;((n / 2) + 97);
    }

    srand(static_cast&lt;unsigned int&gt;(time(NULL)));
    //Mischen
    for(size_t n = 0; n != numCards; ++n)
    {
        char tmpCard = cardArray[n];
        size_t cardToSwap = rand() % numCards;
        //zwei Karten tauschen
        cardArray[n] = cardArray[cardToSwap];
        cardArray[cardToSwap] = tmpCard;
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1544060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544060</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 09 Jul 2008 10:26:56 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 12:01:16 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">//die auskommentierten header sind deprecated
#include &lt;iostream&gt;
#include &lt;cmath&gt; //&lt;math.h&gt;
#include &lt;string&gt; //&lt;string.h&gt;
#include &lt;conio.h&gt;
#include &lt;dos.h&gt;
#include &lt;cstdio&gt; //&lt;stdio.h&gt;
</code></pre>
</blockquote>
<p>hmm.. find ich ne so hübsch...</p>
<p>Aufruf:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;iostream&gt;

size_t pairs (0);
do
{
//goodbit, ignore, clear, ... kA ^^
std::cin &gt;&gt; pairs;
} while (pairs == 0);
std::vector &lt;char&gt; Karten = newCards &lt;char&gt; (paare, 'a');
//oder
std::vector &lt;TMemoryBilderEnum&gt; Karten = newCards &lt;TMemoryBilderEnum&gt; (paare, TMemoryBilderEnum::first);
</code></pre>
<p>1.:</p>
<pre><code class="language-cpp">#include &lt;vector&gt; //nen c++-array - das macht alles von allein und ist dynamisch ^^
#include &lt;iterator&gt; /*man kann auch die vectoren so wie arrays durchgehen, aber man kann sich auch einen zeiger nehmen,
den man immer auf das nächste element schiebt - welche Vorteile das hat, kannste ja selbst googlen, wenns dich interessiert
in Kürze: es ist schneller, eleganter und mit Hilfe von iteratoren übergibt man meistens Arrays in andere Funktionen, weil man dann nicht alles x-mal kopieren muss

iterator+n gibt uns einen zeiger, der genau n positionen weiter geschoben ist als n (der zeiger an sich wird aber nicht verändert)
++iterator lässt den iterator (von mir bis jz zeiger genannt) eine position weiter-&quot;laufen&quot;*/

template &lt;class T&gt; //T sollte hier der Karten-Typ sein - in deinem Fall char
  typename std::vector &lt;T&gt; newCards (const size_t &amp;pairs, T startingvalue)
   {
    std::vector &lt;T&gt; Return (pairs*2); //ein array mit allen karten
    const std::vector &lt;T&gt;::const_iterator end (Return.end ()); //das ende des arrays - kein &quot;richtiges&quot; Element mehr
    for (std::vector &lt;T&gt;::iterator iter (Return.begin ()); iter != end; iter += 2, ++startingvalue)
    {
        *iter = startingvalue; //die aktuelle Position
        *(iter+1) = startingvalue; //und die nächste auch
    }
    std::random_shuffle (Return.begin (), end); //das Mischen
    return Return; //die Karten müssen ja auch wieder aus der Funktion rauskommen ^^
   }
</code></pre>
<p>2.:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;iterator&gt;

template &lt;class T&gt;
  typename std::vector &lt;T&gt; newCards (const size_t &amp;pairs, T startingvalue)
   {
    std::vector &lt;T&gt; Return; //ein leeres array
    Return.reserver (pairs*2); //die größe reservieren - kann man auch weglassen, aber wenn du iwann ma lange weile hast und mit 99999999 paaren spielen willst... ^^
    for (size_t i (0); i != pairs; ++i, ++startingvalue)
    {
        Return.push_back (startingvalue);
        Return.push_back (startingvalue); //2 gleiche elemente werden an das array rangehangen
    }
    std::random_shuffle (Return.begin (), Return.end ()); //mischen
    return Return; //und die wiedergabe des arrays
   }
</code></pre>
<p>Fänd ich schöner...<br />
Find schon die Idee an sich komisch, die Anzahl der Karten (und nicht der Paare) zu übergeben...</p>
<p>Naja - aber den Zweck erfüllt &quot;deine&quot; Funktion ja auch - von daher...</p>
<p>Hab erst danach dran gedacht, dass der OP das wahrscheinlich ne versteht - wollts dann au ne wieder wegmachen und deshalb hab ichs einfach ma probiert, zu erklären ^^</p>
<p>bb</p>
<p>edit:<br />
Außerdem solltest du von den globalen Variablen wegkommen und solltest es nicht so statisch machen...</p>
<pre><code class="language-cpp">void spielfeld_ausgabe (const size_t &amp;reihen, const size_t &amp;spalten)
  { 
     cout &lt;&lt; &quot;\r\n&quot;
       &lt;&lt; &quot;\r\n&quot;
       &lt;&lt; &quot;\r\n&quot;;
     for (size_t spalte (0); spalte != spalten; ++spalte)
        {
           cout &lt;&lt; &quot;\t&quot; &lt;&lt; spalte;
        }
     cout &lt;&lt; &quot;\r\n&quot;;
     for (size_t reihe (0); reihe != reihen; ++reihe)
        {
           cout &lt;&lt; reihe;
           for (size_t spalte (0); spalte != spalten; ++spalte)
              {
                 cout &lt;&lt; &quot;\t&quot; &lt;&lt; verdeckt[reihe*spalten+spalte];
              }
           cout &lt;&lt; &quot;\r\n&quot;;
        }
  }
</code></pre>
<p>Ich hab dir mal die Ausgabe anders gemacht - allerdings nutzt die noch immer das globale Array 'verdeckt'... Das könntest du hier mit Iteratoren mit-übergeben, also so in etwa:</p>
<pre><code class="language-cpp">//Aufruf:
spielfeld_ausgabe &lt;char&gt; (5, 3, verdeckt.begin (), verdeckt.end ()); //die kartenart von oben
//Fkt:
template &lt;class T&gt;
  void spielfeld_ausgabe (const size_t &amp;reihen, const size_t &amp;spalten, typename std::vector &lt;T&gt;::const_iterator begin, typename const std::vector &lt;T&gt;::const_iterator &amp;end)
   {
//wie gehabt bis zu den schleifen
     for (size_t reihe (0); reihe != reihen; ++reihe)
        {
           cout &lt;&lt; reihe;
           for (size_t spalte (0); spalte != spalten; ++begin)
              {
                 cout &lt;&lt; &quot;\t&quot; &lt;&lt; *begin;
              }
           cout &lt;&lt; &quot;\r\n&quot;;
        }
   }
</code></pre>
<p>jz wars das aber wirklich erst mal ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544131</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 12:01:16 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 11:53:47 GMT]]></title><description><![CDATA[<p>Ich habe bewusst auf die STL verzeichtet, weil ich aufgrund des Codes des TO's annehmen muss, dass es ihn überfordern würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544149</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 09 Jul 2008 11:53:47 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 12:03:53 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Hab erst danach dran gedacht, dass der OP das wahrscheinlich ne versteht - wollts dann au ne wieder wegmachen und deshalb hab ichs einfach ma probiert, zu erklären ^^</p>
</blockquote>
<p>Aber anders hab ichs au nicht gelernt - iwo hat ma wer geschrieben, wie iwas tolles geht und dann sucht man halt, bis man alle funktionen im code bei google gefunden hat und weiß, was sie machen ;o)</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544166</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 12:03:53 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 12:15:36 GMT]]></title><description><![CDATA[<p>Übrigens liegen die Karten hierbei immer nebeneinander:</p>
<pre><code class="language-cpp">std::random_shuffle (Return.begin (), Return.end ()); //mischen
</code></pre>
<p>PS: Bei Variante 2.<br />
PPS: Wieso übergibst Du primitive Typen als Referenz?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544168</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 09 Jul 2008 12:15:36 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 12:30:35 GMT]]></title><description><![CDATA[<blockquote>
<p>Übrigens liegen die Karten hierbei immer nebeneinander</p>
</blockquote>
<p>versteh ich nicht &gt;&lt;</p>
<blockquote>
<p>Wieso übergibst Du primitive Typen als Referenz?</p>
</blockquote>
<p>Weils auch nicht schadet - Compiler überlegt sich schon, ob er sie kopiert oder nicht... Wenn ers nicht will is auch gut - nur, damit er sich nicht so eingeengt und beschnitten fühlt <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 />
Nein - weil ich so was idR auch als template-parameter mache...<br />
Außerdem gehts dann schneller den Typ zu ändern - selbst, wenn dann auf einmal nen long long oder double oder was weiß ich statt size_t steht, würde der compiler es richtig machen und ich müsste dann nicht noch jedes ma überlegen, was ich machen würde ^^</p>
<p>is halt ne angewohnheit - vll keine gute aber bis jz hatte ich noch keine probs damit.</p>
<p>oder siehst du iwas, was dagegen spricht?</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544199</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 12:30:35 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 12:33:45 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Außerdem gehts dann schneller den Typ zu ändern - selbst, wenn dann auf einmal nen long long oder double oder was weiß ich statt size_t steht, würde der compiler es richtig machen und ich müsste dann nicht noch jedes ma überlegen, was ich machen würde ^^</p>
</blockquote>
<p>Wieso meinst du, könne man den Typ schneller ändern, wenn er als Referenz da steht (bei deinen Beispielen gehts ja nur um Änderungen zwischen primitiven Typen)? Oder hab ich dich falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544207</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 09 Jul 2008 12:33:45 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 12:39:13 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<blockquote>
<p>Übrigens liegen die Karten hierbei immer nebeneinander</p>
</blockquote>
<p>versteh ich nicht &gt;&lt;</p>
</blockquote>
<p>Du mischt Deine Paare mit random_shuffle. Nicht die einzelnen Karten.</p>
<p>unskilled schrieb:</p>
<blockquote>
<blockquote>
<p>Wieso übergibst Du primitive Typen als Referenz?</p>
</blockquote>
<p>Weils auch nicht schadet - Compiler überlegt sich schon, ob er sie kopiert oder nicht... Wenn ers nicht will is auch gut - nur, damit er sich nicht so eingeengt und beschnitten fühlt <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 />
Nein - weil ich so was idR auch als template-parameter mache...<br />
Außerdem gehts dann schneller den Typ zu ändern - selbst, wenn dann auf einmal nen long long oder double oder was weiß ich statt size_t steht, würde der compiler es richtig machen und ich müsste dann nicht noch jedes ma überlegen, was ich machen würde ^^</p>
<p>is halt ne angewohnheit - vll keine gute aber bis jz hatte ich noch keine probs damit.</p>
<p>oder siehst du iwas, was dagegen spricht?</p>
<p>bb</p>
</blockquote>
<p>Bist Du sicher, dass der Compiler sich aussuchen kann, ob er kopiert oder referenziert? Meines wissens ist der ref-Operator keine Empfehlung an den Compiler. Hast Du eine Quelle dafür?<br />
Dagegen spricht, dass Du bei jedem Zugriff eine Derefenzierung hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544214</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 09 Jul 2008 12:39:13 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 12:43:22 GMT]]></title><description><![CDATA[<p>naja...</p>
<pre><code class="language-cpp">//hpp:
void ShowBla (const size_t &amp;toout);

//cpp:
void ShowBla (const size_t &amp;toout)
{
std::cout &lt;&lt; toout;
}

//=&gt;ändern, weil size_t ne mehr gut genug ist...

//hpp:
void ShowBla (const long long &amp;toout); //nur typ ändern

//cpp:
void ShowBla (const long long &amp;toout) //nur typ ändern
{
std::cout &lt;&lt; toout;
}
</code></pre>
<p>und wenn man es ganz toll machen will, dann nimmt man ja statt size_t auch meiste std::vector::size_type oder wie au immer das genau ist - hab ich noch nie gemacht aber scho ab und an ma überlegt, es doch zu tun ^^<br />
und da würde dann die referenz wahrscheinlich schon sinn machen - obwohl es auf ner 64bit cpu wahrscheinlich au ne mehr lohnt, ne 64bit große variable als referenz zu übergeben... hmm...</p>
<p>also dann nur noch das ändern ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544221</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 12:43:22 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 12:49:19 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>also dann nur noch das ändern ^^</p>
</blockquote>
<p>So hab ich das auch verstanden, aber ich hab mich gefragt, weil <code>size_t</code> schon fast ein elementarer Datentyp ist (teilweise ist er doch als <code>unsigned int</code> definiert?).</p>
<p>Und für die Elementartypen kannst du dir (neben der entfallenden Dereferenzierung, die mir ein gutes Argument scheint) bei Übergaben als Kopie noch eine Menge Zeichen sparen <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/1544230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544230</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 09 Jul 2008 12:49:19 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 12:54:04 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>naja...</p>
<pre><code class="language-cpp">//hpp:
void ShowBla (const size_t &amp;toout);

//cpp:
void ShowBla (const size_t &amp;toout)
{
std::cout &lt;&lt; toout;
}

//=&gt;ändern, weil size_t ne mehr gut genug ist...

//hpp:
void ShowBla (const long long &amp;toout); //nur typ ändern

//cpp:
void ShowBla (const long long &amp;toout) //nur typ ändern
{
std::cout &lt;&lt; toout;
}
</code></pre>
</blockquote>
<p>Wozu brauchts da eine Referenz? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Meinst Du, das long long ist so groß, dass es sich lohnt?<br />
Wenn man den Parameter innerhalb der Funktion mehrfach benutzt (womöglich auch noch in einer Schleife) würde ich eher auf die Dereferenzierungen verzichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544234</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 09 Jul 2008 12:54:04 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 12:55:43 GMT]]></title><description><![CDATA[<p>das war nicht an dich sondern an nexus....</p>
<p>bei long long (64bit) ist es (vermutlich ^^) besser, nur einen pointer kopieren zu müssen, weil der ja (auf 32bit cpus) nur 32bit ist - und dann mit dem weitergearbeitet wird...</p>
<p>muss dich denke noch lang nicht interessieren...<br />
aber kannst ja ma nach referenzen suchen um zu wissen, wozu die da sind...<br />
solltest im forum au genug finden:</p>
<p>grob - sie sind genau so, wie pointer, nur sicherer, cpp-iger und können nicht NULL sein...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544238</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 12:55:43 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 13:05:49 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>bei long long (64bit) ist es (vermutlich ^^) besser, nur einen pointer kopieren zu müssen, weil der ja (auf 32bit cpus) nur 32bit ist</p>
</blockquote>
<p>Und wie soll sein Wertebereich dann grösser sein als der eines <code>ints</code> ?</p>
<p>unskilled schrieb:</p>
<blockquote>
<p>muss dich denke noch lang nicht interessieren...<br />
aber kannst ja ma nach referenzen suchen um zu wissen, wozu die da sind...<br />
solltest im forum au genug finden:</p>
<p>grob - sie sind genau so, wie pointer, nur sicherer, cpp-iger und können nicht NULL sein...</p>
</blockquote>
<p>Das Konzept der Referenzen ist mir übrigens durchaus bekannt. <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/1544258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544258</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 09 Jul 2008 13:05:49 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 13:35:09 GMT]]></title><description><![CDATA[<p>oh - sry...<br />
ich war jz davon ausgegangen, dass der OP das gefragt hatte... ich les beim nächsten ma besser - versprochen <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>
<blockquote>
<p>Und wie soll sein Wertebereich dann grösser sein als der eines ints?</p>
</blockquote>
<p>rhetorische frage?</p>
<p>2^32 &lt; 2^62</p>
<p>warum das passieren kann: kein plan... ich hab ja nur gesagt: für den fall, dass....<br />
außerdem wird kein compiler der welt (zumindest die relevanten) nen int wirklich als referenz übergeben - von daher kommt es aufs gleiche raus, ob ich nu</p>
<p>const size_t bla<br />
oder size_t bla<br />
oder const size_t &amp;bla</p>
<p>schreib - an der geschwindigkeit änder das gar nix...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544286</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 13:35:09 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 13:48:40 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>rhetorische frage?</p>
<p>2^32 &lt; 2^62</p>
</blockquote>
<p>Sorry, ich habe dich falsch verstanden und das &quot;der&quot; auf dein &quot;long long (64bit)&quot; bezogen: <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>unskilled schrieb:</p>
<blockquote>
<p>bei long long (64bit) ist es (vermutlich ^^) besser, nur einen pointer kopieren zu müssen, weil <strong>der</strong> ja (auf 32bit cpus) nur 32bit ist</p>
</blockquote>
<p>unskilled schrieb:</p>
<blockquote>
<p>außerdem wird kein compiler der welt (zumindest die relevanten) nen int wirklich als referenz übergeben</p>
</blockquote>
<p>Bist du dir da sicher, ob der Compiler das auch optimiert? Vor allem, wenn durch die Dereferenzierungen mehr Zeitverluste als durch die Kopie entstehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544309</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 09 Jul 2008 13:48:40 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 13:54:38 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>unskilled schrieb:</p>
<blockquote>
<p>bei long long (64bit) ist es (vermutlich ^^) besser, nur einen pointer kopieren zu müssen, weil <strong>der</strong> ja (auf 32bit cpus) nur 32bit ist</p>
</blockquote>
</blockquote>
<p>sry, mein fehler ^^</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>unskilled schrieb:</p>
<blockquote>
<p>außerdem wird kein compiler der welt (zumindest die relevanten) nen int wirklich als referenz übergeben</p>
</blockquote>
<p>Bist du dir da sicher, ob der Compiler das auch optimiert? Vor allem, wenn durch die Dereferenzierungen mehr Zeitverluste als durch die Kopie entstehen?</p>
</blockquote>
<p>Hmmm.. Wüsste jetzt zwar nicht, wie ich das rausfinden soll aber dachte gelesen zu haben, dass der Compiler da immer selbst entscheidet (genau wie bei inline) - solange der Copy-CTor einfach genug ist oder das Element kleiner ist, als die Registergröße sollte er es nicht referenzieren sondern kopieren - belehrt mich (bitte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> ) eines besseren, wenn ich falsch liege.</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544319</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 13:54:38 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 14:00:53 GMT]]></title><description><![CDATA[<p>Nein, die Benutzung des Referenzoperators ist eine klare Anweisung und keine Empfehlung. Es wird mit Sicherheit keine Kopie erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544328</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 09 Jul 2008 14:00:53 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 14:12:15 GMT]]></title><description><![CDATA[<p>hmm... verdammt - ich weiß nich ma, nach was ich da suchen soll - aber ich bin mir sicehr, das ma iwo gelesen zu haben : &lt;</p>
<p>wenn ichs find, dann post ich es noch - wenn nich, dann haste wo recht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544339</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 14:12:15 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 14:13:56 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>aber ich bin mir sicehr, das ma iwo gelesen zu haben</p>
</blockquote>
<p>Naja, nicht jede Quelle ist zuverlässig. Ich hab z.B. schon sehr oft <code>void main()</code> in Büchern und Tutorials gesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544341</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 09 Jul 2008 14:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen Memorie on Wed, 09 Jul 2008 14:21:12 GMT]]></title><description><![CDATA[<p>Guter Vergleich &gt;&lt; Hab auch gerad überdurchschnittlich (für meine Verhätlnisse) lange gegoogelt und nix gefunden, was meine Vermutung rechtfertigen würde...</p>
<p>naja... bye</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1544345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1544345</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 09 Jul 2008 14:21:12 GMT</pubDate></item></channel></rss>