<?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[Dynamische Speicherverwaltung....]]></title><description><![CDATA[<p>Also wir haben in der Schule vollgendes Programm geschrieben:</p>
<pre><code class="language-cpp">//Dynamische Speicheralokierung für Strings
//15.12.2005 (C) by Sascha Willems
#include &lt;iostream&gt;
#include &lt;string.h&gt;
using namespace std;

int main() {
       int n,i,j;
       char (*namen)[30],puffer[30];

       cout &lt;&lt; &quot;Wie viele Namen moechten sie eingeben? &quot;;
       cin &gt;&gt; n;
       cin.ignore();

       namen = new char[n][30];

       for(i=0;i&lt;n;i++){
               cout &lt;&lt; &quot;Geben Sie den &quot; &lt;&lt; i+1 &lt;&lt; &quot;ten Namen ein =&gt; &quot;;
               cin.getline(namen[i],30);
       }

       //--Bubble-Sort--//
       for(i=0;i&lt;n;i++) {
               for(j=0;j&lt;n-i;j++) {
                       if(strcmp(namen[j],namen[j+1])&gt;0) {
                               //Sortierung von Namen
                               strcpy(puffer,namen[j]);
                               strcpy(namen[j],namen[j+1]);
                               strcpy(namen[j+1],puffer);
                       }
               }
       }

       for(i=0;i&lt;n;i++) {
               cout &lt;&lt; &quot;Der &quot; &lt;&lt; i+1 &lt;&lt; &quot;.te Name ist: &quot; &lt;&lt; namen[i] &lt;&lt; endl;
       }

       delete[] namen;

       return 0;
}
</code></pre>
<p>Es vordert den User auf die Anzahl, der einzugebenden Namen, einzugeben.<br />
Dann wird die Anzahl der Namen eingelesen und sortiert und wieder ausgegeben.<br />
Nun sollen wir aber auch abfragen wie viele Zeichen der längste name hat....</p>
<p>Die erste Abfrage mit der Anzahl hab ich verstanden und alles allerdings weiß ich nicht wie ich die dynamische speicherverwaltung auch mit der länge verwirklichen soll....kann mir da evtl jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/129803/dynamische-speicherverwaltung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 10:18:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/129803.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Dec 2005 18:52:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 18:52:14 GMT]]></title><description><![CDATA[<p>Also wir haben in der Schule vollgendes Programm geschrieben:</p>
<pre><code class="language-cpp">//Dynamische Speicheralokierung für Strings
//15.12.2005 (C) by Sascha Willems
#include &lt;iostream&gt;
#include &lt;string.h&gt;
using namespace std;

int main() {
       int n,i,j;
       char (*namen)[30],puffer[30];

       cout &lt;&lt; &quot;Wie viele Namen moechten sie eingeben? &quot;;
       cin &gt;&gt; n;
       cin.ignore();

       namen = new char[n][30];

       for(i=0;i&lt;n;i++){
               cout &lt;&lt; &quot;Geben Sie den &quot; &lt;&lt; i+1 &lt;&lt; &quot;ten Namen ein =&gt; &quot;;
               cin.getline(namen[i],30);
       }

       //--Bubble-Sort--//
       for(i=0;i&lt;n;i++) {
               for(j=0;j&lt;n-i;j++) {
                       if(strcmp(namen[j],namen[j+1])&gt;0) {
                               //Sortierung von Namen
                               strcpy(puffer,namen[j]);
                               strcpy(namen[j],namen[j+1]);
                               strcpy(namen[j+1],puffer);
                       }
               }
       }

       for(i=0;i&lt;n;i++) {
               cout &lt;&lt; &quot;Der &quot; &lt;&lt; i+1 &lt;&lt; &quot;.te Name ist: &quot; &lt;&lt; namen[i] &lt;&lt; endl;
       }

       delete[] namen;

       return 0;
}
</code></pre>
<p>Es vordert den User auf die Anzahl, der einzugebenden Namen, einzugeben.<br />
Dann wird die Anzahl der Namen eingelesen und sortiert und wieder ausgegeben.<br />
Nun sollen wir aber auch abfragen wie viele Zeichen der längste name hat....</p>
<p>Die erste Abfrage mit der Anzahl hab ich verstanden und alles allerdings weiß ich nicht wie ich die dynamische speicherverwaltung auch mit der länge verwirklichen soll....kann mir da evtl jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943767</guid><dc:creator><![CDATA[LordSash]]></dc:creator><pubDate>Fri, 16 Dec 2005 18:52:14 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 19:05:36 GMT]]></title><description><![CDATA[<p>Du brauchst dazu nichts dynamisches. Alles was du brauchst ist ein Variable die die grösste Länge der bisher eingegebenen Strings enthält.<br />
Musst nur gleich nach der Eingabe überprüfen ob der neue String länger ist als der bisher Längste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943780</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Fri, 16 Dec 2005 19:05:36 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 19:23:08 GMT]]></title><description><![CDATA[<p>ne das geht ja ned.....denn wenn man dem script eine feste länge der variablen gibt kann man die auch nicht mehr ändern...zumindestens nicht wärend das programm läuft....darum soll erst gefragt werden wie lang das array sein soll und dann wird es erstellt....nur wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943793</guid><dc:creator><![CDATA[LordSash]]></dc:creator><pubDate>Fri, 16 Dec 2005 19:23:08 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 19:28:14 GMT]]></title><description><![CDATA[<p>LordSash schrieb:</p>
<blockquote>
<p>ne das geht ja ned.....denn wenn man dem script eine feste länge der variablen gibt kann man die auch nicht mehr ändern...zumindestens nicht wärend das programm läuft....darum soll erst gefragt werden wie lang das array sein soll und dann wird es erstellt....nur wie?</p>
</blockquote>
<p>Jetzt verstehe ich nichts mehr. Du hast das doch alles schon in deinem Programm.<br />
Du hast nirgends gesagt dass du die länge aller strings abspeichern willst. (wozu auch du hast ja die strings ) du wolltest ja nur wissen wie lange der längste ist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943796</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Fri, 16 Dec 2005 19:28:14 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 19:35:53 GMT]]></title><description><![CDATA[<p>achso dann schein ich das etwas falsch formuliert gehabt zu haben <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>Also, wären das Progrmam läuft soll abgefragt werden wie lang der längste name ist und dann die länge des Arrays erstellt werden...also das array was jetzt erstellt wird hat ja eine feste länge von 30 zeichen.....dies soll aber auch dynamisch gemacht werden das abgefragt wie viele speicherplätze dafür resaviert werden....zB. sagt der User dann ich möchte 4 Namen eingeben mit einer maximal länge von 10 zeichen.....so in edwa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943801</guid><dc:creator><![CDATA[LordSash]]></dc:creator><pubDate>Fri, 16 Dec 2005 19:35:53 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 19:48:39 GMT]]></title><description><![CDATA[<p>Ah so</p>
<pre><code class="language-cpp">int n,l,i,j;
       char (**namen),*puffer;

       cout &lt;&lt; &quot;Wie viele Namen moechten sie eingeben? &quot;;
       cin &gt;&gt; n;
       cout &lt;&lt; &quot;Wie lange sollen die Namen werden? &quot;;
       cin &gt;&gt; l;
       cin.ignore();

       puffer = new char[l+1];
       namen = new char[n][l+1];
       for(i=0;i&lt;n;i++){
               cout &lt;&lt; &quot;Geben Sie den &quot; &lt;&lt; i+1 &lt;&lt; &quot;ten Namen ein =&gt; &quot;;
               cin.getline(namen[i],l+1);
       }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/943814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943814</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Fri, 16 Dec 2005 19:48:39 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 20:01:30 GMT]]></title><description><![CDATA[<p>Die Länge des längsten Strings ist für das Array unerheblich, die Strings müssen nicht alle gleichlang sein.</p>
<pre><code class="language-cpp">char** namen = new char*[n];
</code></pre>
<p>Stattdessen kannst du das ganze in der Schleife über den Buffer machen:</p>
<pre><code class="language-cpp">cin.getline (puffer, 30);
strcpy (namen[i] = new char[strlen (puffer) + 1], puffer);
namen[i][strlen (puffer) + 1] = '\0';
</code></pre>
<p>Das muss nicht komplett richtig sein, aber du fragst ja auch mit dem cstring Kram an der falschen Stelle ;). Eigentlich gehörts so:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;queue&gt;
#include &lt;string&gt;
#include &lt;functional&gt;

int main ()
{
    std::priority_queue&lt;std::string, std::vector&lt;std::string&gt;, std::greater&lt;std::string&gt; &gt; namen;

    for (int i = 1; ; ++i)
    {
        std::cout &lt;&lt; i &lt;&lt; &quot;ten Namen eingeben:&quot;;
        std::string s;
        getline (std::cin, s);
        if (s == &quot;&quot;) break;
        else namen.push (s);
    }

    for (int i = 1; !namen.empty () ; ++i)
    {
        std::cout &lt;&lt; &quot;Der &quot; &lt;&lt; i &lt;&lt; &quot;te Name ist &quot; &lt;&lt; namen.top () &lt;&lt; std::endl;
        namen.pop ();
    }

    return 0;
}
</code></pre>
<p>:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943823</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Fri, 16 Dec 2005 20:01:30 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 20:06:22 GMT]]></title><description><![CDATA[<p>hm das mag er wohl nicht so ganz?<br />
ich bekomme vollgende Fehlermeldung:</p>
<pre><code>D:\Coden\cpp\schule\test2.cpp(19) : error C2540: Kein konstanter Ausdruck als Feldgrenze
D:\Coden\cpp\schule\test2.cpp(19) : error C2440: '=' : 'char (*)[1]' kann nicht in 'char ** ' konvertiert werden
Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator 
oder eine Typumwandlung im C- oder Funktionsformat
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9606">@filmor</a><br />
funktionen hatten wir noch nicht...wenn ich die nu mit einbau meckert mein Lehrer nur wieder rum....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943829</guid><dc:creator><![CDATA[LordSash]]></dc:creator><pubDate>Fri, 16 Dec 2005 20:06:22 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 20:09:48 GMT]]></title><description><![CDATA[<p>Ich seh da keine Funktionen (der Header &lt;functional&gt; ist was anderes), aber das untere war eh nur als &quot;reine&quot; C++-Lösung ohne C-Header gedacht. So würde ich es zumindest machen. Das für dich interessante steht darüber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943831</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Fri, 16 Dec 2005 20:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 20:12:59 GMT]]></title><description><![CDATA[<p>Ich bin ganz zerknirscht. Das geht so natürlich nicht.</p>
<pre><code class="language-cpp">namen = new char*[n];
       for (int idx= 0; idx &lt; n; ++idx )
           namen[idx] = new char[l+1];
</code></pre>
<p>freigeben:</p>
<pre><code class="language-cpp">for (int idx= 0; idx &lt; n; ++idx )
           delete [] namen[idx];
       delete [] namen;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/943834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943834</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Fri, 16 Dec 2005 20:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 20:14:58 GMT]]></title><description><![CDATA[<p>ZuK schrieb:</p>
<blockquote>
<p>Ich bin ganz zerknirscht.</p>
</blockquote>
<p>Zu recht :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943836</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Fri, 16 Dec 2005 20:14:58 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung.... on Fri, 16 Dec 2005 20:18:11 GMT]]></title><description><![CDATA[<p>aahhhh...alles klar so gehts....hätte ich auch selber drauf kommen können <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>naja recht vielen dank an euch beide <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/943840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/943840</guid><dc:creator><![CDATA[LordSash]]></dc:creator><pubDate>Fri, 16 Dec 2005 20:18:11 GMT</pubDate></item></channel></rss>