<?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[elemente in mehrdim.array tauschen]]></title><description><![CDATA[<p>hallo,</p>
<p>schreibe gerade mein erstes c++ prog und schon probleme...<br />
habe über google leider nix gefunden.</p>
<p>also ich habe ein zweidimensionales char array mit unterschiedlichen zeichenketten</p>
<p>Bsp.:</p>
<p>mein_array[0]=&quot;abc&quot;;<br />
mein_array[1]=&quot;accba&quot;;<br />
mein_array[3]=&quot;accb&quot;;<br />
mein_array[4]=&quot;abcabcabc&quot;;</p>
<p>mein ziel ist es die ketten zu sortieren mittels bubblesort, dafür nutze ich eine funktion vergleich() mit einem vorgegebenes alphabet, außerdem ist die länge der ZK (bzw. der 2.dimension) entscheident.</p>
<p>wie kann ich nun, nachdem ich festgestellt habe das z.B. mein_array[1] und mein_array[2] vertauscht werden müssen, die beiden auch tatsächlich und möglichst einfach vertauschen?<br />
mein größtes problem ist halt das die 2.ten dimensionen unterschiedliche längen haben...</p>
<p>danke für die hilfe <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203821/elemente-in-mehrdim-array-tauschen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 00:35:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203821.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Jan 2008 21:28:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sat, 26 Jan 2008 21:28:46 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>schreibe gerade mein erstes c++ prog und schon probleme...<br />
habe über google leider nix gefunden.</p>
<p>also ich habe ein zweidimensionales char array mit unterschiedlichen zeichenketten</p>
<p>Bsp.:</p>
<p>mein_array[0]=&quot;abc&quot;;<br />
mein_array[1]=&quot;accba&quot;;<br />
mein_array[3]=&quot;accb&quot;;<br />
mein_array[4]=&quot;abcabcabc&quot;;</p>
<p>mein ziel ist es die ketten zu sortieren mittels bubblesort, dafür nutze ich eine funktion vergleich() mit einem vorgegebenes alphabet, außerdem ist die länge der ZK (bzw. der 2.dimension) entscheident.</p>
<p>wie kann ich nun, nachdem ich festgestellt habe das z.B. mein_array[1] und mein_array[2] vertauscht werden müssen, die beiden auch tatsächlich und möglichst einfach vertauschen?<br />
mein größtes problem ist halt das die 2.ten dimensionen unterschiedliche längen haben...</p>
<p>danke für die hilfe <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444224</guid><dc:creator><![CDATA[paddel]]></dc:creator><pubDate>Sat, 26 Jan 2008 21:28:46 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sat, 26 Jan 2008 22:45:59 GMT]]></title><description><![CDATA[<p>Hi...</p>
<p>Also wenn es nicht unbedingt ein Array sein soll, würde<br />
ich das ganze mit einer list oder einem vector und strings machen.<br />
Ist viel einfacher und auch eher C++, arrays und chars sind eher C.</p>
<p>Mit einer list würde das dann so aussehen:</p>
<pre><code class="language-cpp">#include &lt;list&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;

int main(){
	//Liste und Iterator erstellen
	list&lt;string&gt; mylist;
	list&lt;string&gt;::iterator it;;

	//Liste füllen
	mylist.push_back(&quot;abc&quot;);
	mylist.push_back(&quot;accba&quot;);
	mylist.push_back(&quot;accb&quot;);
	mylist.push_back(&quot;abcabcabc&quot;);

	//Liste sortieren
	mylist.sort();

	//Liste anzeigen
	for(it = mylist.begin();it!=mylist.end();it++){
		cout&lt;&lt;(*it)&lt;&lt;endl;
	}
}
</code></pre>
<pre><code>Ausgabe vor sotierung:

abc
accba
accb
abcabcabc
</code></pre>
<pre><code>Ausgabe nach der sortierung:

abc
abcabcabc
accb
accba
</code></pre>
<p>Und für die list kannst du dir auch eigene Sortierverfahren schreiben<br />
mehr infos findest hier: <a href="http://www.cplusplus.com/reference/stl/list/sort.html" rel="nofollow">http://www.cplusplus.com/reference/stl/list/sort.html</a></p>
<p>mfg smilingman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444243</guid><dc:creator><![CDATA[smilingman]]></dc:creator><pubDate>Sat, 26 Jan 2008 22:45:59 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 09:56:55 GMT]]></title><description><![CDATA[<p>Du machst es dir umständlich dadurch, dass du nicht die Klasse std::string nutzt ... (dann wäre std::swap für ein einfaches tauschen der Inhalte ausreichend ...)<br />
Weiß nicht ob es ausreicht einfach die Zeiger umzubiegen ... sonst kopier einfach:</p>
<pre><code class="language-cpp">void swap_cstring(char*&amp; first, char*&amp; second)
{
    char* tmp(new char[std::strlen(first) + 1]); // copy first to tmp
    std::strcpy(tmp, first);
    delete [] first; // copy second to first
    first = new char[std::strlen(second) + 1]);
    std::strcpy(first, second);
    delete [] second; // set tmp to second
    second = tmp;
}
</code></pre>
<p>.</p>
<pre><code class="language-cpp">char* array[2] = {&quot;string_01&quot;, &quot;string_02&quot; };
std::cout &lt;&lt; &quot;#01: &quot; &lt;&lt; array[0] &lt;&lt; &quot;\n#02: &quot; &lt;&lt; array[1] &lt;&lt; std::endl;
swap_cstring(array[0], array[1]);
std::cout &lt;&lt; &quot;#01: &quot; &lt;&lt; array[0] &lt;&lt; &quot;\n#02: &quot; &lt;&lt; array[1] &lt;&lt; std::endl;
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444261</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 27 Jan 2008 09:56:55 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 09:19:51 GMT]]></title><description><![CDATA[<p>danke für die hilfe bisher.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8953">@smilingman</a>: ja leider muss es ein array sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>@(D)Evil: okay ich glaube das kommt hin, werd es heut mal ausprobieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444318</guid><dc:creator><![CDATA[paddel]]></dc:creator><pubDate>Sun, 27 Jan 2008 09:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 09:37:28 GMT]]></title><description><![CDATA[<p>paddel schrieb:</p>
<blockquote>
<p>...<br />
also ich habe ein zweidimensionales char array mit unterschiedlichen zeichenketten</p>
<p>Bsp.:</p>
<p>mein_array[0]=&quot;abc&quot;;<br />
mein_array[1]=&quot;accba&quot;;<br />
mein_array[3]=&quot;accb&quot;;<br />
mein_array[4]=&quot;abcabcabc&quot;;</p>
<p>mein ziel ist es die ketten zu sortieren mittels bubblesort ...</p>
</blockquote>
<p>Man kann z.B. schreiben :</p>
<pre><code class="language-cpp">char mein_array[4] = {&quot;abc&quot;, &quot;accba&quot;, &quot;accb&quot;, &quot;abcabcabc&quot;};
</code></pre>
<p>Das ergibt ein <strong>eindimensionales</strong> Array aus Zeigern auf nullterminierte Zeichenketten verschiedenener Länge.<br />
Man kann nach alphanumerischem Vergleich diese Zeiger sortieren.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444327</guid><dc:creator><![CDATA[willy]]></dc:creator><pubDate>Sun, 27 Jan 2008 09:37:28 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 09:41:01 GMT]]></title><description><![CDATA[<p>Glaubst du daran, dass das geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444329</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 27 Jan 2008 09:41:01 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 09:41:56 GMT]]></title><description><![CDATA[<p>Sorry</p>
<pre><code class="language-cpp">char* mein_array[4] = {&quot;abc&quot;, &quot;accba&quot;, &quot;accb&quot;, &quot;abcabcabc&quot;};
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444330</guid><dc:creator><![CDATA[willy]]></dc:creator><pubDate>Sun, 27 Jan 2008 09:41:56 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 09:49:24 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>Glaubst du daran, dass das geht?</p>
</blockquote>
<p>@(D)evil<br />
<strong>char</strong> array[2] = {&quot;string_01&quot;, &quot;string_02&quot; };**<br />
das geht mit Sicherheit nicht!<br />
<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/1444333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444333</guid><dc:creator><![CDATA[willy]]></dc:creator><pubDate>Sun, 27 Jan 2008 09:49:24 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 09:53:35 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>sonst kopier einfach:</p>
<pre><code class="language-cpp">void swap_cstring(char*&amp; first, char*&amp; second)
{
    char* tmp(new char[std::strlen(first) + 1]); // copy first to tmp
    std::strcpy(tmp, first);
    delete [] first; // copy second to first
    first = new char[std::strlen(second) + 1]);
    std::strcpy(first, second);
    delete [] second; // set tmp to second
    second = tmp;
}
</code></pre>
<p>.</p>
<pre><code class="language-cpp">char** array[2] = {&quot;string_01&quot;, &quot;string_02&quot; };
std::cout &lt;&lt; &quot;#01: &quot; &lt;&lt; array[0] &lt;&lt; &quot;\n#02: &quot; &lt;&lt; array[1] &lt;&lt; std::endl;
swap_cstring(array[0], array[1]);
std::cout &lt;&lt; &quot;#01: &quot; &lt;&lt; array[0] &lt;&lt; &quot;\n#02: &quot; &lt;&lt; array[1] &lt;&lt; std::endl;
</code></pre>
<p>...</p>
</blockquote>
<p>habe das grad mal so übernommen, funktioniert aber nicht so ganz:</p>
<pre><code>Fehler	3	error C2440: 'Initialisierung': 'const char [10]' kann nicht in 'char **' konvertiert werden	c:\dokumente und einstellungen\*****\array.cpp	21
Fehler	4	error C2440: 'Initialisierung': 'const char [10]' kann nicht in 'char **' konvertiert werden	c:\dokumente und einstellungen\*****\array.cpp	21	
Fehler	5
error C2664: 'swap_cstring': Konvertierung des Parameters 1 von 'char **' in 'char *&amp;' nicht möglich	c:\dokumente und einstellungen\*****\array.cpp	23
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1444339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444339</guid><dc:creator><![CDATA[paddel]]></dc:creator><pubDate>Sun, 27 Jan 2008 09:53:35 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 09:56:42 GMT]]></title><description><![CDATA[<p>Jap sorry stimmt. Eine Dimension außer acht gelassen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444341</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 27 Jan 2008 09:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 11:29:33 GMT]]></title><description><![CDATA[<p>paddel schrieb:</p>
<blockquote>
<p>... mein ziel ist es die ketten zu sortieren mittels bubblesort ...</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;
#include &lt;cstring&gt;
#include &lt;iostream&gt;

void bubble(char** , int); 

int main()
{
   char* mein_array[4] = {&quot;abc&quot;, &quot;accba&quot;, &quot;accb&quot;, &quot;abcabcabc&quot;};

   int N = sizeof(mein_array)/sizeof(char*);

   bubble(mein_array, N);

   for(int i = 0; i &lt; N; i++)
   {
	   std::cout &lt;&lt; mein_array[i] &lt;&lt; std::endl;
   }

}

void bubble(char** array, int elemente) 
{
   char* temp;
   while(elemente--)
      for(int i = 1; i &lt;= elemente; i++)
         if(strcmp(array[i-1], array[i]) &gt; 0)   // &lt; 0  ==absteigend sortieren 
		 {
            temp = array[i];
            array[i] = array[i-1];
            array[i-1] = temp;
         }
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /><br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444408</guid><dc:creator><![CDATA[willy]]></dc:creator><pubDate>Sun, 27 Jan 2008 11:29:33 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 13:57:04 GMT]]></title><description><![CDATA[<p>dankeschön</p>
<p>eine frage noch,<br />
und zwar wird die anzahl der zeichenketten (VAR_ANZ) sowie deren MAX_LAENGE erst während der laufzeit festgelegt.</p>
<p>ist es richtig wenn ich das array so definiere:</p>
<pre><code class="language-cpp">char **mein_array = new char[VAR_ANZ][MAX_LAENGE];
</code></pre>
<p>und wie übergebe ich dann dieses dynamische zweidimensionale array an die funktion bubble(); ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444507</guid><dc:creator><![CDATA[paddel]]></dc:creator><pubDate>Sun, 27 Jan 2008 13:57:04 GMT</pubDate></item><item><title><![CDATA[Reply to elemente in mehrdim.array tauschen on Sun, 27 Jan 2008 15:46:28 GMT]]></title><description><![CDATA[<p>paddel schrieb:</p>
<blockquote>
<p>dankeschön</p>
<p>eine frage noch,<br />
und zwar wird die anzahl der zeichenketten (VAR_ANZ) sowie deren MAX_LAENGE erst während der laufzeit festgelegt.</p>
<p>ist es richtig wenn ich das array so definiere:</p>
<pre><code class="language-cpp">char **mein_array = new char[VAR_ANZ][MAX_LAENGE];
</code></pre>
<p>und wie übergebe ich dann dieses dynamische zweidimensionale array an die funktion bubble(); ?</p>
</blockquote>
<pre><code class="language-cpp">void bubble(char** , int); 

int main()
{

   int VAR_ANZ = 4;
   int MAX_LAENGE = 10;

   char**  mein_array   = new char*[VAR_ANZ];
   for (int	i = 0; i &lt; VAR_ANZ; i++)
	   mein_array[i] = new char[MAX_LAENGE];

   //z.B.:
   mein_array[0] = &quot;abca&quot;;
   mein_array[2] = &quot;abcc&quot;; 
   strcpy(mein_array[1], &quot;abc&quot;);
   strcpy(mein_array[3], mein_array[2]);

   bubble(mein_array, VAR_ANZ);

   for(int i = 0; i &lt; VAR_ANZ; i++)
   {
	   std::cout &lt;&lt; mein_array[i] &lt;&lt; std::endl;
   }
}  

void bubble(char** array, int elemente) 
{
   char* temp;
   while(elemente--)
      for(int i = 1; i &lt;= elemente; i++)
         if(strcmp(array[i-1], array[i]) &gt; 0)   // &lt; 0  ==absteigend sortieren 
		 {
            temp = array[i];
            array[i] = array[i-1];
            array[i-1] = temp;
         }
}
</code></pre>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444579</guid><dc:creator><![CDATA[willy]]></dc:creator><pubDate>Sun, 27 Jan 2008 15:46:28 GMT</pubDate></item></channel></rss>