<?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[Fragen zu dyn. Datenstruktur]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgenden Quelltext:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

using namespace std;

class Datenstruktur
{
      private: 
               const unsigned int S; //1. FRAGE: WARUM BRAUCHE ICH HIER CONST?
               int * Buffer; 
               unsigned int R; 
               unsigned int F; 
               unsigned int Num;

               void increment (unsigned int &amp; i) const //2. FRAGE: WARUM WIRD HIER CONST BENÖTIGT? WELCHEN SINN HAT DAS HIER
               {
                    if (++i &gt;= S)       
                       i = 0;
                       cout&lt;&lt; &quot;i hat den WERT:&quot; &lt;&lt; i &lt;&lt; endl;
               }

               public: 
                       Datenstruktur (unsigned int S = 100) : S(S), Buffer (new int [S]), R(0), F(1), Num(0) { cout &lt;&lt; &quot;S ist &quot; &lt;&lt; S &lt;&lt; endl; }
                       //3. FRAGE: WARUM WIRD HIER S = 100 GESETZT? S WIRD DOCH IN DER MAIN ÜBERGEBEN?
                       //4. FRAGE: WIRD BEI BUFFER EIN NEUES ARRAY MIT &quot;S&quot; ELEMENTEN ANGELEGT? BUFFER IST DANN DER ZEIGER AUF DAS ARRAY?
                       ~Datenstruktur ()
                                      { delete [] Buffer; }

                                      bool full () const { return Num == S; }
                                      bool empty () const { return Num == 0; }
                                      bool enDatenstruktur (int x) 
                                      {
                                           if ( full ())
                                              return false;
                                          increment (R);
                                          cout &lt;&lt; &quot;R HAT DEN WERT&quot; &lt;&lt; R &lt;&lt; endl;
                                          Buffer[R] = x; //5. FRAGE: DA R MIT 0 INITIALISIERT WURDE, WIRD  NACH INCRMENT IN DAS 1. ELEMENT WAS GESCHRIEBEN?
                                                         // DAS BEDEUTET, BUFFER[0] BLEIBT IMMER LEER????? KANN DAS STIMMEN??
                                          ++Num;
                                          return true;
                                      }

                                      int deDatenstruktur () 
                                      {
                                          if ( empty ())
                                             return 0;
                                          int x = Buffer[F]; //siehe Frage 5, ich lösche ja nimals den 0 ten Wert, sondern beginne mit F = 1?
                                          increment (F);
                                          --Num;
                                          return x;
                                          }
};

int main(int argc, char *argv[])
{
    int auswahl = 1;
    int aNr = 1000;
    Datenstruktur test(10);
    do
      {
      cout &lt;&lt; endl &lt;&lt; &quot;---- AUFTRAG ----&quot; &lt;&lt; endl;
      cout &lt;&lt; &quot;1. Neuer Autrag&quot; &lt;&lt; endl;
      cout &lt;&lt; &quot;2. Naechsten Auftrag abarbeiten&quot; &lt;&lt; endl;
      cout &lt;&lt; &quot;0. Programm beenden&quot; &lt;&lt; endl;
      cout &lt;&lt; &quot;&gt; ihre Wahl [Return]: &quot;;
      cin &gt;&gt; auswahl;
      cout &lt;&lt; endl;
      switch (auswahl)
      {
      case 0:
            break;
      case 1:
            if (test.full ())
               cerr &lt;&lt; &quot;ERROR: Datenstruktur overflow&quot; &lt;&lt; endl;
            else
             {
                cout &lt;&lt; &quot;&gt; Neuer Auftrag erzeugt; AuftragsNr: &quot; &lt;&lt; aNr &lt;&lt; endl;
                test.enDatenstruktur (aNr);
                aNr++;
              }
              break;

    case 2:
           if (test.empty ())
              cerr &lt;&lt; &quot;ERROR: Datenstruktur is empty&quot; &lt;&lt; endl;
           else
               cout &lt;&lt; &quot;&gt; Auftrag bearbeitet; AuftragsNr: &quot; &lt;&lt; test.deDatenstruktur () &lt;&lt; endl;
           break;

    default:
            cerr &lt;&lt; &quot;ERROR: falsche Auswahl&quot; &lt;&lt; endl;
    }
    } while (auswahl != 0);
    while (! test.empty ())
    cout &lt;&lt; &quot;Auftrag noch in der test, Nr: &quot; &lt;&lt; test.deDatenstruktur () &lt;&lt; endl;
    return 1;

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>Im Text habe ich 5 Fragen hinzugefügt. Würdet ihr mir hier bitte helfen?</p>
<p>Und noch eine Frage: Welche Art von dyn. Datenstruktur handelt es sich?<br />
Mir ist jetzt nur die verkettete Liste bekannt. Aber ist das wirklich eine verkettete Liste? Ich habe ja keinen Nachfolger gespeichert? Und ich lege ja bereits im Vorfeld fest, wie viele Aufträge existieren dürfen?</p>
<p>Danke!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/290202/fragen-zu-dyn-datenstruktur</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 10:29:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/290202.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Jul 2011 10:00:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fragen zu dyn. Datenstruktur on Thu, 21 Jul 2011 10:00:37 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgenden Quelltext:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

using namespace std;

class Datenstruktur
{
      private: 
               const unsigned int S; //1. FRAGE: WARUM BRAUCHE ICH HIER CONST?
               int * Buffer; 
               unsigned int R; 
               unsigned int F; 
               unsigned int Num;

               void increment (unsigned int &amp; i) const //2. FRAGE: WARUM WIRD HIER CONST BENÖTIGT? WELCHEN SINN HAT DAS HIER
               {
                    if (++i &gt;= S)       
                       i = 0;
                       cout&lt;&lt; &quot;i hat den WERT:&quot; &lt;&lt; i &lt;&lt; endl;
               }

               public: 
                       Datenstruktur (unsigned int S = 100) : S(S), Buffer (new int [S]), R(0), F(1), Num(0) { cout &lt;&lt; &quot;S ist &quot; &lt;&lt; S &lt;&lt; endl; }
                       //3. FRAGE: WARUM WIRD HIER S = 100 GESETZT? S WIRD DOCH IN DER MAIN ÜBERGEBEN?
                       //4. FRAGE: WIRD BEI BUFFER EIN NEUES ARRAY MIT &quot;S&quot; ELEMENTEN ANGELEGT? BUFFER IST DANN DER ZEIGER AUF DAS ARRAY?
                       ~Datenstruktur ()
                                      { delete [] Buffer; }

                                      bool full () const { return Num == S; }
                                      bool empty () const { return Num == 0; }
                                      bool enDatenstruktur (int x) 
                                      {
                                           if ( full ())
                                              return false;
                                          increment (R);
                                          cout &lt;&lt; &quot;R HAT DEN WERT&quot; &lt;&lt; R &lt;&lt; endl;
                                          Buffer[R] = x; //5. FRAGE: DA R MIT 0 INITIALISIERT WURDE, WIRD  NACH INCRMENT IN DAS 1. ELEMENT WAS GESCHRIEBEN?
                                                         // DAS BEDEUTET, BUFFER[0] BLEIBT IMMER LEER????? KANN DAS STIMMEN??
                                          ++Num;
                                          return true;
                                      }

                                      int deDatenstruktur () 
                                      {
                                          if ( empty ())
                                             return 0;
                                          int x = Buffer[F]; //siehe Frage 5, ich lösche ja nimals den 0 ten Wert, sondern beginne mit F = 1?
                                          increment (F);
                                          --Num;
                                          return x;
                                          }
};

int main(int argc, char *argv[])
{
    int auswahl = 1;
    int aNr = 1000;
    Datenstruktur test(10);
    do
      {
      cout &lt;&lt; endl &lt;&lt; &quot;---- AUFTRAG ----&quot; &lt;&lt; endl;
      cout &lt;&lt; &quot;1. Neuer Autrag&quot; &lt;&lt; endl;
      cout &lt;&lt; &quot;2. Naechsten Auftrag abarbeiten&quot; &lt;&lt; endl;
      cout &lt;&lt; &quot;0. Programm beenden&quot; &lt;&lt; endl;
      cout &lt;&lt; &quot;&gt; ihre Wahl [Return]: &quot;;
      cin &gt;&gt; auswahl;
      cout &lt;&lt; endl;
      switch (auswahl)
      {
      case 0:
            break;
      case 1:
            if (test.full ())
               cerr &lt;&lt; &quot;ERROR: Datenstruktur overflow&quot; &lt;&lt; endl;
            else
             {
                cout &lt;&lt; &quot;&gt; Neuer Auftrag erzeugt; AuftragsNr: &quot; &lt;&lt; aNr &lt;&lt; endl;
                test.enDatenstruktur (aNr);
                aNr++;
              }
              break;

    case 2:
           if (test.empty ())
              cerr &lt;&lt; &quot;ERROR: Datenstruktur is empty&quot; &lt;&lt; endl;
           else
               cout &lt;&lt; &quot;&gt; Auftrag bearbeitet; AuftragsNr: &quot; &lt;&lt; test.deDatenstruktur () &lt;&lt; endl;
           break;

    default:
            cerr &lt;&lt; &quot;ERROR: falsche Auswahl&quot; &lt;&lt; endl;
    }
    } while (auswahl != 0);
    while (! test.empty ())
    cout &lt;&lt; &quot;Auftrag noch in der test, Nr: &quot; &lt;&lt; test.deDatenstruktur () &lt;&lt; endl;
    return 1;

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>Im Text habe ich 5 Fragen hinzugefügt. Würdet ihr mir hier bitte helfen?</p>
<p>Und noch eine Frage: Welche Art von dyn. Datenstruktur handelt es sich?<br />
Mir ist jetzt nur die verkettete Liste bekannt. Aber ist das wirklich eine verkettete Liste? Ich habe ja keinen Nachfolger gespeichert? Und ich lege ja bereits im Vorfeld fest, wie viele Aufträge existieren dürfen?</p>
<p>Danke!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2095941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2095941</guid><dc:creator><![CDATA[AlF2]]></dc:creator><pubDate>Thu, 21 Jul 2011 10:00:37 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu dyn. Datenstruktur on Thu, 21 Jul 2011 10:29:50 GMT]]></title><description><![CDATA[<ol>
<li>Brauchst du nicht, ist optional.</li>
<li>Damit die Methode auch aus einer <code>const Datenstruktur</code> aus aufgerufen werden kann. Sozusagen eine Garantie, dass die Methode <code>*this</code> nicht verändert.</li>
<li>Das ist ein Default-Wert.</li>
<li>Der Zeiger zeigt dann auf ein Array, welches mit <code>new[]</code> reserviert wurde.</li>
<li>Ich verstehe die Frage nicht ganz, sorry.</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2095958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2095958</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Thu, 21 Jul 2011 10:29:50 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu dyn. Datenstruktur on Thu, 21 Jul 2011 10:33:05 GMT]]></title><description><![CDATA[<p>1. S bezeichnet die Größe des im Konstruktor erstellten Arrays buffer. Wenn es nicht const ist, kann es theoretisch geändert werden, der Buffer würde seine Größe aber nicht ändern, const verhindert, dass S irgendwann nicht mehr die Größe des Buffers enthält.<br />
2. Solltest Du auf die Idee kommen, ein konstantes Objekt anzulegen mit zB</p>
<p>const Datenstrukur ds;</p>
<p>dann können für dieses Objekt nur Methoden aufgerufen werden, die auch mit const ausgezeichnet sind und das Objekt nicht verändern.</p>
<p>3. warum? keine Ahnung. Sinn? Ist ein Default-Wert, wenn man das Objekt wie oben gezeigt ohne Argument erstellt, wird einfach 100 genommen.</p>
<ol start="4">
<li></li>
</ol>
<p>Ja, ja.</p>
<p>5. wenn einmal das ganze Array vollgeschrieben wurde, gibt increment ja 0 zurück, dann wird also auch Buffer[0] beschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2095960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2095960</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 21 Jul 2011 10:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu dyn. Datenstruktur on Thu, 21 Jul 2011 11:33:08 GMT]]></title><description><![CDATA[<p>Super!</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>
<p>Jetzt ist nur noch die eine Frage offen:</p>
<blockquote>
<p>Und noch eine Frage: Welche Art von dyn. Datenstruktur handelt es sich?<br />
Mir ist jetzt nur die verkettete Liste bekannt. Aber ist das wirklich eine verkettete Liste? Ich habe ja keinen Nachfolger gespeichert? Und ich lege ja bereits im Vorfeld fest, wie viele Aufträge existieren dürfen?</p>
</blockquote>
<p>Danke!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096017</guid><dc:creator><![CDATA[AlF2]]></dc:creator><pubDate>Thu, 21 Jul 2011 11:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu dyn. Datenstruktur on Thu, 21 Jul 2011 13:12:02 GMT]]></title><description><![CDATA[<p>Es handelt sich um eine einfache struktur. Das ganze ist aber sehr complex geschreiben worden. (oder ich hab was übersehen).</p>
<p>-&gt; Stack</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096084</guid><dc:creator><![CDATA[lk]]></dc:creator><pubDate>Thu, 21 Jul 2011 13:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu dyn. Datenstruktur on Thu, 21 Jul 2011 14:33:39 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Danke.</p>
<p>Aber ich glaube Stack ist es nicht, oder?</p>
<p>Wenn ich z.B. 5 Aufträge anlege:</p>
<p>1000<br />
1001<br />
1002<br />
1003<br />
1004</p>
<p>dann werden diese wieder wie folgt abgearbeitet:.</p>
<p>1000<br />
1001<br />
1002<br />
1003<br />
1004</p>
<p>Nennt man das dann Queue?</p>
<p>Was bedeutet dann in diesem Zusammenhang heap? Heap heißt doch einfach, dass die Objekte dynamisch verwaltet werden, oder??</p>
<p>Noch eine Rückfrage an die ursprüngliche Frage:</p>
<p>wenn ich z.B.:</p>
<pre><code class="language-cpp">Datenstruktur test();
</code></pre>
<p>Habe, dann gibt es mehrere Compiler - Fehler, da</p>
<pre><code class="language-cpp">case 1:
            if (test.full ())
               cerr &lt;&lt; &quot;ERROR: Datenstruktur overflow&quot; &lt;&lt; endl;
            else
</code></pre>
<p>Probleme macht.</p>
<p>Weiß jemand warum das so ist? Ich dachte, ich kann auch ein Objekt Datenstruktur ohne Argumente erzeugen?</p>
<p>Danke!!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096121</guid><dc:creator><![CDATA[AlF2]]></dc:creator><pubDate>Thu, 21 Jul 2011 14:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu dyn. Datenstruktur on Thu, 21 Jul 2011 15:30:27 GMT]]></title><description><![CDATA[<p>Also wie ich es sehe ist das etweder eine sehr schlechte Queue, ein mislungener stack, oder ein unaufgeklärtes stück an Buchstaben und Zeichen.</p>
<p>Wird auf jeden Fall in form einer liste gespeichert.<br />
Num zeigt nicht undedingt zum letzten Element, aber eben die Anzahl.<br />
<code>R</code> ist <code>wtf?</code> glaub ich; und will die nächstfreie position angeben. (zum <strong>schreiben</strong>)<br />
<code>F</code> ist <code>hä?!</code> und gibt an (von element 0 startend), wo wir als nächstes zu lesen haben. (zum <strong>lesen</strong>)<br />
<code>S</code> ist <code>Size</code> und ist constant, und gibt eben die maximalanzahl der elemente an.</p>
<p>Also... kein Stack und Keine Queue.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096153</guid><dc:creator><![CDATA[lk]]></dc:creator><pubDate>Thu, 21 Jul 2011 15:30:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu dyn. Datenstruktur on Thu, 21 Jul 2011 16:19:10 GMT]]></title><description><![CDATA[<pre><code>Datenstruktur test();
</code></pre>
<p>ist eine Funktionsdeklaration, selbst wenn es in einer anderen Funktion steht. Mach' die Klammern weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096171</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 21 Jul 2011 16:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu dyn. Datenstruktur on Thu, 21 Jul 2011 20:16:17 GMT]]></title><description><![CDATA[<p>Das ist eine als Ringpuffer implementierte Queue: <a href="http://de.wikipedia.org/wiki/Warteschlange_(Datenstruktur)#Ringpuffer" rel="nofollow">http://de.wikipedia.org/wiki/Warteschlange_(Datenstruktur)#Ringpuffer</a></p>
<p>Was daran so komisch oder misslungen sein soll, weiß ich nicht (bis auf die sehr unschönen Bezeichner für Attribute und Methoden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2096237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2096237</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Thu, 21 Jul 2011 20:16:17 GMT</pubDate></item></channel></rss>