<?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[2D Array durchlaufen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe hier eine 2D Array A[n][m] und möchte alle Einträge einmal Paarweise vergleichen, also für n=2, m=2, wäre das dann<br />
(0,0) mit (0,1), (1,0), (1,1)<br />
(0,1) mit (1,0), (1,1)<br />
(1,0) mit (1,1)</p>
<p>Ich weis nur grad nicht weiter:</p>
<pre><code>for(int i=0; i&lt;n; i++) {
	for(int j=0; j&lt;m; j++) {
		for(int i2=0; i2&lt;n; i2++) {
			for(int j2=0; j2&lt;m; j2++) {
				//Vergleiche (i,j) mit (i2,j2)
			}
		}
	}
}
</code></pre>
<p>Wie verhindere ich jetzt die ganzen doppelten Vergleiche <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="😕"
    />.<br />
Für 1D wäre es einfach:</p>
<pre><code>for(int i=0; i&lt;n-1; i++) {
	for(int j=i+1; j&lt;n; j++) {		
		//Vergleiche i und j			
	}
}
</code></pre>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317054/2d-array-durchlaufen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 17:16:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317054.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 May 2013 18:33:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2D Array durchlaufen on Sat, 25 May 2013 18:33:31 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe hier eine 2D Array A[n][m] und möchte alle Einträge einmal Paarweise vergleichen, also für n=2, m=2, wäre das dann<br />
(0,0) mit (0,1), (1,0), (1,1)<br />
(0,1) mit (1,0), (1,1)<br />
(1,0) mit (1,1)</p>
<p>Ich weis nur grad nicht weiter:</p>
<pre><code>for(int i=0; i&lt;n; i++) {
	for(int j=0; j&lt;m; j++) {
		for(int i2=0; i2&lt;n; i2++) {
			for(int j2=0; j2&lt;m; j2++) {
				//Vergleiche (i,j) mit (i2,j2)
			}
		}
	}
}
</code></pre>
<p>Wie verhindere ich jetzt die ganzen doppelten Vergleiche <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="😕"
    />.<br />
Für 1D wäre es einfach:</p>
<pre><code>for(int i=0; i&lt;n-1; i++) {
	for(int j=i+1; j&lt;n; j++) {		
		//Vergleiche i und j			
	}
}
</code></pre>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326139</guid><dc:creator><![CDATA[Dudeldu]]></dc:creator><pubDate>Sat, 25 May 2013 18:33:31 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Array durchlaufen on Sat, 25 May 2013 19:59:39 GMT]]></title><description><![CDATA[<p>Ich würde mal vermuten, dass du i2 einfach nur ab i+1 und j2 ab j+1 laufen lassen musst.</p>
<p>Eine andere Idee: Behandle den 2-Dimensionalen Array einfach so als wäre es ein eindimensionaler. Die Werte liegen ja sowieso hintereinander im Speicher.<br />
Schau dir vielleicht mal folgenden Code an:</p>
<pre><code>#include &lt;iostream&gt;

int main()
{
  int data[2][2];
  data[0][0] = 1;
  data[0][1] = 2;
  data[1][0] = 3;
  data[1][1] = 4;

  for(int i=0; i&lt;4; ++i)
    {
      std::cout &lt;&lt; &quot;data[&quot; &lt;&lt; i/2 &lt;&lt; &quot;]&quot; &lt;&lt; &quot;[&quot; &lt;&lt; i%2 &lt;&lt; &quot;] = &quot; &lt;&lt; *(*data+i)  &lt;&lt; std::endl;
    }
}
</code></pre>
<p>Die Ausgabe ist</p>
<pre><code>data[0][0] = 1
data[0][1] = 2
data[1][0] = 3
data[1][1] = 4
</code></pre>
<p>Dann kannst du deine 1D-Variante verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326147</guid><dc:creator><![CDATA[Max3000]]></dc:creator><pubDate>Sat, 25 May 2013 19:59:39 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Array durchlaufen on Sat, 25 May 2013 20:48:09 GMT]]></title><description><![CDATA[<p>Hi, danke erstmal für die Antwort.</p>
<p>Max3000 schrieb:</p>
<blockquote>
<p>Ich würde mal vermuten, dass du i2 einfach nur ab i+1 und j2 ab j+1 laufen lassen musst.</p>
</blockquote>
<p>Das geht nicht, hab ich auch erst gedacht, man sieht aber schnell, dass Vergleiche übersprungen werden.</p>
<p>Hmm, da ich einen Vector im Vector von Klassen habe, kann ich das nicht so einfach mit '*' dereferenzieren, zumindest weis ich nicht wie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326151</guid><dc:creator><![CDATA[Dudeldu]]></dc:creator><pubDate>Sat, 25 May 2013 20:48:09 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Array durchlaufen on Sat, 25 May 2013 22:31:12 GMT]]></title><description><![CDATA[<p>Tipp: Ein 2D-Array mit NxM Einträgen ist auch nicht großartig anders als ein 1D-Array mit N*M Einträgen. Übertrage deine vorhandene Lösung für den 1D Fall auf 2D. Sprich: Jedes Element muss mit allen seinen Nachfolgern verglichen werden. Du musst bloß irgendeine Ordnung festlegen. Zeilenweise nach Index bietet sich als Ordnung an (im Klartext: Zähl einfach durch! Du hast eben N*M Elemente in N Zeilen mit je M Spalten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326166</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 25 May 2013 22:31:12 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Array durchlaufen on Sat, 25 May 2013 22:58:45 GMT]]></title><description><![CDATA[<p>Hi, hab ich nicht gerafft...<br />
Ich komm nicht auf die sinnvolle Sortierung um durchzuzählen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326169</guid><dc:creator><![CDATA[Dudeldu]]></dc:creator><pubDate>Sat, 25 May 2013 22:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Array durchlaufen on Sat, 25 May 2013 23:59:33 GMT]]></title><description><![CDATA[<p>Wie würdest du denn die Buchstaben auf einer Buchseite durchzählen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326175</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 25 May 2013 23:59:33 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Array durchlaufen on Sun, 26 May 2013 10:01:33 GMT]]></title><description><![CDATA[<p>Eine Möglichkeit um bei deinem Lösungsansatz mit den For-Schleifen zubleiben wäre:</p>
<pre><code>#include &lt;iostream&gt;

int main()
{
  const int n = 2;
  const int m = 3;
  int data[n][m];
  data[0][0] = 1;
  data[0][1] = 2;
  data[0][2] = 3;
  data[1][0] = 4;
  data[1][1] = 5;
  data[1][2] = 6;

  for(int i=0; i&lt;n; i++)
  {
    for(int j=0; j&lt;m; j++)
    {
      for(int i2=i; i2&lt;n; i2++)
      {
        for(int j2 = i == i2 ? j+1 : 0; j2&lt;m; j2++)
        {
          std::cout &lt;&lt; &quot;Vergleicht data[&quot; &lt;&lt; i &lt;&lt; &quot;][&quot; &lt;&lt; j &lt;&lt; &quot;] mit data[&quot; &lt;&lt; i2 &lt;&lt; &quot;][&quot; &lt;&lt; j2 &lt;&lt; &quot;]\n&quot;;
        }
      }
      std::cout &lt;&lt; '\n';
    }
  }
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>Vergleicht data[0][0] mit data[0][1]
Vergleicht data[0][0] mit data[0][2]
Vergleicht data[0][0] mit data[1][0]
Vergleicht data[0][0] mit data[1][1]
Vergleicht data[0][0] mit data[1][2]

Vergleicht data[0][1] mit data[0][2]
Vergleicht data[0][1] mit data[1][0]
Vergleicht data[0][1] mit data[1][1]
Vergleicht data[0][1] mit data[1][2]

Vergleicht data[0][2] mit data[1][0]
Vergleicht data[0][2] mit data[1][1]
Vergleicht data[0][2] mit data[1][2]

Vergleicht data[1][0] mit data[1][1]
Vergleicht data[1][0] mit data[1][2]

Vergleicht data[1][1] mit data[1][2]
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2326210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326210</guid><dc:creator><![CDATA[stefkowa]]></dc:creator><pubDate>Sun, 26 May 2013 10:01:33 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Array durchlaufen on Sun, 26 May 2013 10:12:55 GMT]]></title><description><![CDATA[<p>Dudeldu schrieb:</p>
<blockquote>
<p>Hi, hab ich nicht gerafft...<br />
Ich komm nicht auf die sinnvolle Sortierung um durchzuzählen.</p>
</blockquote>
<p>ein nxm array kannst du auch als 1-D array der länge m*n auffassen.Und dann bist du wieder ind einem bequemen 1-D Fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326212</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 26 May 2013 10:12:55 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Array durchlaufen on Sun, 26 May 2013 10:50:16 GMT]]></title><description><![CDATA[<p>In Richtung 1D wäre eine Möglichkeit:</p>
<pre><code>#include &lt;iostream&gt;

int main()
{
  const int n = 2;
  const int m = 3;

  for (int i = 0; i &lt; n*m-1; ++i)
  {
    for (int j = i+1; j &lt; n*m; ++j)
    {
      std::cout &lt;&lt; &quot;Vergleicht data[&quot; &lt;&lt; i/m &lt;&lt; &quot;][&quot; &lt;&lt; i%m
                &lt;&lt; &quot;] mit data[&quot; &lt;&lt; j/m &lt;&lt; &quot;][&quot; &lt;&lt; j%m &lt;&lt; &quot;]\n&quot;;
    }
    std::cout &lt;&lt; '\n';
  }

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2326216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326216</guid><dc:creator><![CDATA[stefkowa]]></dc:creator><pubDate>Sun, 26 May 2013 10:50:16 GMT</pubDate></item></channel></rss>