<?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[push&#x2F;pop als eigene Funktionen]]></title><description><![CDATA[<p>Moin,</p>
<p>ich habe ein kleines Programm geschrieben, welches erst 50 Zahlen auf den Heap schreibt und sie danach wieder ausgibt:</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;

class heap
{
public:
	heap() {}
	~heap() {}
	int getInhalt() const { return itsInhalt; }
	void setInhalt(int inhalt) { itsInhalt = inhalt; }

private:
	int itsInhalt;
};

void main()
{

	heap *stapel[49];
	int i;
	heap *pHeap;

	for(i = 0; i &lt; 50; i++) // push auf den Stapel
	{
		pHeap = new heap;
		pHeap-&gt;setInhalt( 100- i*2 );
		stapel[i] = pHeap;
	}

		for(i = 0; i &lt; 50; i++) // pop vom Stapel
	{
		cout &lt;&lt; &quot;Stapel Nr. &quot; &lt;&lt; i &lt;&lt; &quot; ist &quot;;
		cout &lt;&lt; stapel[i]-&gt;getInhalt() &lt;&lt; &quot;\n&quot;;
	}

}
</code></pre>
<p>Nun will ich die for-Schleifen als eigene Funktionen aufrufen (push, pop).<br />
Allerdings weiß ich nicht genau, wie ich die am besten integrieren kann.<br />
Denn nun sind pHeap und stapel &quot;undeclared identifier&quot;.<br />
Beide Funktionen müssen ja Zugriff drauf haben, oder nicht ? Wo soll ich die denn nun am besten definieren ?</p>
<p>Danke für jegliche Ansätze <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>
<pre><code class="language-cpp">void push()
{
	for(i = 0; i &lt; 50; i++)
	{
		pHeap = new heap;
		pHeap-&gt;setInhalt(50-i*2);
		stapel[i] = pHeap;
	}
}

void pop()
{
	for(int i = 0; i &lt; 50; i++)
	{
		cout &lt;&lt; &quot;Stapel Nr. &quot; &lt;&lt; i &lt;&lt; &quot; ist &quot;;
		cout &lt;&lt; stapel[i]-&gt;getInhalt() &lt;&lt; &quot;\n&quot;;
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/202834/push-pop-als-eigene-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 00:09:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202834.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Jan 2008 22:40:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to push&#x2F;pop als eigene Funktionen on Tue, 15 Jan 2008 22:40:36 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich habe ein kleines Programm geschrieben, welches erst 50 Zahlen auf den Heap schreibt und sie danach wieder ausgibt:</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;

class heap
{
public:
	heap() {}
	~heap() {}
	int getInhalt() const { return itsInhalt; }
	void setInhalt(int inhalt) { itsInhalt = inhalt; }

private:
	int itsInhalt;
};

void main()
{

	heap *stapel[49];
	int i;
	heap *pHeap;

	for(i = 0; i &lt; 50; i++) // push auf den Stapel
	{
		pHeap = new heap;
		pHeap-&gt;setInhalt( 100- i*2 );
		stapel[i] = pHeap;
	}

		for(i = 0; i &lt; 50; i++) // pop vom Stapel
	{
		cout &lt;&lt; &quot;Stapel Nr. &quot; &lt;&lt; i &lt;&lt; &quot; ist &quot;;
		cout &lt;&lt; stapel[i]-&gt;getInhalt() &lt;&lt; &quot;\n&quot;;
	}

}
</code></pre>
<p>Nun will ich die for-Schleifen als eigene Funktionen aufrufen (push, pop).<br />
Allerdings weiß ich nicht genau, wie ich die am besten integrieren kann.<br />
Denn nun sind pHeap und stapel &quot;undeclared identifier&quot;.<br />
Beide Funktionen müssen ja Zugriff drauf haben, oder nicht ? Wo soll ich die denn nun am besten definieren ?</p>
<p>Danke für jegliche Ansätze <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>
<pre><code class="language-cpp">void push()
{
	for(i = 0; i &lt; 50; i++)
	{
		pHeap = new heap;
		pHeap-&gt;setInhalt(50-i*2);
		stapel[i] = pHeap;
	}
}

void pop()
{
	for(int i = 0; i &lt; 50; i++)
	{
		cout &lt;&lt; &quot;Stapel Nr. &quot; &lt;&lt; i &lt;&lt; &quot; ist &quot;;
		cout &lt;&lt; stapel[i]-&gt;getInhalt() &lt;&lt; &quot;\n&quot;;
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1437323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437323</guid><dc:creator><![CDATA[xMänneken]]></dc:creator><pubDate>Tue, 15 Jan 2008 22:40:36 GMT</pubDate></item><item><title><![CDATA[Reply to push&#x2F;pop als eigene Funktionen on Wed, 16 Jan 2008 00:20:41 GMT]]></title><description><![CDATA[<p>Hi, man würde das zwar anders benennen und anders lösen, aber zu deiner Frage:<br />
Übergebe stapel an die Funktion, dh du brauchst einen Parameter dafür und pheap kannst du dir in der Funktion nochmal definieren.</p>
<pre><code class="language-cpp">void push(heap *stapel[])
{
    for(i = 0; i &lt; 49; i++)
    {
        heap *pHeap = new heap;
        pHeap-&gt;setInhalt(50-i*2);
        stapel[i] = pHeap;
    }
}

//... in main
push(stapel);
</code></pre>
<p>Zudem hast du 49 Elemente, die von 0-48 indiziert werden, du zählst aber von 0-49 und andere Kleinigkeiten noch, aber das später <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/1437349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437349</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 16 Jan 2008 00:20:41 GMT</pubDate></item><item><title><![CDATA[Reply to push&#x2F;pop als eigene Funktionen on Wed, 16 Jan 2008 00:23:31 GMT]]></title><description><![CDATA[<p>zunächst mal:<br />
1. verwende nicht &lt;iostream.h&gt; sondern &lt;iostream&gt;.<br />
2. main muss als <code>int main ()</code> deklariert werden.<br />
3. stapel ist ein array von 49 zeigern auf heap, in deiner schleife erzeugst du aber 50 heap-instanzen.<br />
4. speicher, den du mit new allokierst, musst du mit delete wieder freigeben.<br />
5. variablen immer erst so spät wie möglich definieren. d.h. die i, welches du nur in der schleifebrauchst, im schleifenkopf und pHeap, welches du nur in der schleife brauchst, auch nur dort.</p>
<p>beachtest du dies alles, sieht deine funktion dann so aus:</p>
<pre><code class="language-cpp">int main()
{

    heap *stapel[50];   

    for(int i = 0; i &lt; 50; i++) // push auf den Stapel
    {
        heap* pHeap = new heap;
        pHeap-&gt;setInhalt( 100- i*2 );
        stapel[i] = pHeap;
    }

    for(int i = 0; i &lt; 50; i++) // pop vom Stapel
    {
        cout &lt;&lt; &quot;Stapel Nr. &quot; &lt;&lt; i &lt;&lt; &quot; ist &quot;;
        cout &lt;&lt; stapel[i]-&gt;getInhalt() &lt;&lt; &quot;\n&quot;;
    }

    for(int i = 0; i &lt; 50; ++i)
    { 
        delete stapel[i];
    }   
}
</code></pre>
<p>jetzt zu deiner frage. du musst der funktion, die du aufrufen willst, deinen stapel als parameter übergeben. das funktioniert so:</p>
<pre><code class="language-cpp">void push(heap * * stapel)
{
    for(int i = 0; i &lt; 50; i++)
    {
        heap* pHeap = new heap;
        pHeap-&gt;setInhalt(50-i*2);
        stapel[i] = pHeap;
    }
}

//aufruf in main:
push (stapel);
</code></pre>
<p>ein array kann in einen zeiger auf dessen erstes element umgewandelt werden.<br />
die elemente sind zeiger auf heaps.<br />
kombiniere: dein array wird in einen zeiger auf einen zeiger auf einen stapel umgewandelt.</p>
<p>abgesehen von dem allen solltest du deine funktionen nicht push und pop nennen, sondern ihnen namen geben, die beschreiben, was sie tatsächlich tun. bspw. fill und print.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437351</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Wed, 16 Jan 2008 00:23:31 GMT</pubDate></item><item><title><![CDATA[Reply to push&#x2F;pop als eigene Funktionen on Wed, 16 Jan 2008 14:30:56 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>danke nochmal für die Hilfe, habe versucht eurer Vorschläge umzusetzen, Programm läuft auch und Ausgabe ist auch richtig <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>Vielleicht könntet Ihr nochmal drüber sehen und gucken ob das auch soweit alles stimmt. Danke ! <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>PS: Die Zeiger werden nie meine Freunde sein <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="🤡"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;

class heap
{
public:
	heap() {}
    ~heap() {}
    int getInhalt() const { return itsInhalt; }
    void setInhalt(int inhalt) { itsInhalt = inhalt; }

private:
    int itsInhalt;
}; 

void fuellen(heap * * stapel);
void ausgeben(heap * * stapel);

void fuellen(heap * * stapel)
{
    for(int i = 1; i &lt; 51; i++)
    {
        heap* pHeap = new heap;
        pHeap-&gt;setInhalt(50-i);
        stapel[i] = pHeap;
    }
} 

void ausgeben(heap * * stapel)
{
	for(int i = 1; i &lt; 51; i++) // pop vom Stapel
    {
        cout &lt;&lt; &quot;Stapel Nr. &quot; &lt;&lt; i &lt;&lt; &quot; ist &quot;;
        cout &lt;&lt; stapel[i]-&gt;getInhalt() &lt;&lt; &quot;\n&quot;;
    }
}

int main()
{

    heap *stapel[51];  

    fuellen(stapel);
	ausgeben(stapel);

	for(int i = 1; i &lt; 51; ++i)
    {
        delete stapel[i];
    }

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1437703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437703</guid><dc:creator><![CDATA[xMänneken]]></dc:creator><pubDate>Wed, 16 Jan 2008 14:30:56 GMT</pubDate></item><item><title><![CDATA[Reply to push&#x2F;pop als eigene Funktionen on Wed, 16 Jan 2008 14:58:45 GMT]]></title><description><![CDATA[<p>Also auf den ersten Blick sieht es gut aus (abgesehen davon, daß du den Platz für stapel[0] verschwendest, die Anzahl fest einkordiert ist - und du deutlich zu viel mit nackten Zeigern hantierst).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437724</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 16 Jan 2008 14:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to push&#x2F;pop als eigene Funktionen on Wed, 16 Jan 2008 15:41:12 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>und du deutlich zu viel mit nackten Zeigern hantierst)</p>
</blockquote>
<p>Das stört mich auch etwas..gibt es denn eine bessere Alternative ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437773</guid><dc:creator><![CDATA[xMänneken]]></dc:creator><pubDate>Wed, 16 Jan 2008 15:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to push&#x2F;pop als eigene Funktionen on Wed, 16 Jan 2008 15:44:42 GMT]]></title><description><![CDATA[<p>Ja, du könntest direkt die Werte in dein Array packen - noch besser ist's natürlich, wenn du mit std::vector&lt;&gt; arbeitest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437778</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 16 Jan 2008 15:44:42 GMT</pubDate></item></channel></rss>