<?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[Eine wahrscheinlich ganz dumme Anfängerfrage]]></title><description><![CDATA[<p>Hallo erst einmal!</p>
<p>Ich sitze nun seit einer Stunde an der Aufgabe und komme kein Stück weiter <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=":/"
      alt="😕"
    /><br />
Habe im Internet nach Funktionsprototp geguckt, auch im Forum die Suche benutzt, aber richtig weiterhelfen konnte mir kein Ergebnis..<br />
Und das Script von unserem Prof kann man erst recht in die Tonne kloppen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Also hier erst einmal das Programm:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int tuwas(int wert);

int main(void)
{
    cout&lt;&lt;&quot;Ereignis: &quot;&lt;&lt;tuwas(2)&lt;&lt;endl;

    system(&quot;Pause&quot;);
    return 0;       
}

int tuwas(int wert)
{
    wert=wert+1;
    cout&lt;&lt;wert&lt;&lt;&quot;,&quot;;
    if(wert&lt;=5)
    {
                    wert=wert+tuwas(wert);
    }

    return wert;
}
</code></pre>
<p>Die simple Frage..was kommt hinten raus?</p>
<p>Das Ergebnis lautet: 3,4,5,6, Ereignis: 18</p>
<p>Aber ich verstehe einfach nicht, wie man auf die Ausgabe kommt. Bis zur 3 bin ich noch dabei, aber danach bin ich verloren.</p>
<p>Ich wäre echt dankbar, wenn mir jemand einmal genau erklären was mit der 3 im &quot;If-Bereich&quot; geschieht.</p>
<p>Danke schon einmal im Vorraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322411/eine-wahrscheinlich-ganz-dumme-anfängerfrage</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 23:17:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322411.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Dec 2013 20:23:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 20:24:23 GMT]]></title><description><![CDATA[<p>Hallo erst einmal!</p>
<p>Ich sitze nun seit einer Stunde an der Aufgabe und komme kein Stück weiter <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=":/"
      alt="😕"
    /><br />
Habe im Internet nach Funktionsprototp geguckt, auch im Forum die Suche benutzt, aber richtig weiterhelfen konnte mir kein Ergebnis..<br />
Und das Script von unserem Prof kann man erst recht in die Tonne kloppen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Also hier erst einmal das Programm:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int tuwas(int wert);

int main(void)
{
    cout&lt;&lt;&quot;Ereignis: &quot;&lt;&lt;tuwas(2)&lt;&lt;endl;

    system(&quot;Pause&quot;);
    return 0;       
}

int tuwas(int wert)
{
    wert=wert+1;
    cout&lt;&lt;wert&lt;&lt;&quot;,&quot;;
    if(wert&lt;=5)
    {
                    wert=wert+tuwas(wert);
    }

    return wert;
}
</code></pre>
<p>Die simple Frage..was kommt hinten raus?</p>
<p>Das Ergebnis lautet: 3,4,5,6, Ereignis: 18</p>
<p>Aber ich verstehe einfach nicht, wie man auf die Ausgabe kommt. Bis zur 3 bin ich noch dabei, aber danach bin ich verloren.</p>
<p>Ich wäre echt dankbar, wenn mir jemand einmal genau erklären was mit der 3 im &quot;If-Bereich&quot; geschieht.</p>
<p>Danke schon einmal im Vorraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372719</guid><dc:creator><![CDATA[matze917]]></dc:creator><pubDate>Wed, 18 Dec 2013 20:24:23 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 20:27:07 GMT]]></title><description><![CDATA[<p>matze917 schrieb:</p>
<blockquote>
<p>Ich wäre echt dankbar, wenn mir jemand einmal genau erklären was mit der 3 im &quot;If-Bereich&quot; geschieht.</p>
</blockquote>
<p>Aus der 3 wird 3+tuwas(3), musst du ja nur ablesen.<br />
Was tuwas(3) ergibt, musst du halt wieder auf die gleiche Art berechnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372720</guid><dc:creator><![CDATA[ifsw]]></dc:creator><pubDate>Wed, 18 Dec 2013 20:27:07 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 20:31:06 GMT]]></title><description><![CDATA[<p>matze917 schrieb:</p>
<blockquote>
<p>Ich sitze nun seit einer Stunde an der Aufgabe und komme kein Stück weiter <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=":/"
      alt="😕"
    /><br />
Habe im Internet nach Funktionsprototp geguckt, auch im Forum die Suche benutzt, aber richtig weiterhelfen konnte mir kein Ergebnis..</p>
</blockquote>
<p>Das ist auch irgendwie nicht der richtige Suchbegriff. Du suchst <strong>Rekursion.</strong></p>
<p>(Funktionsprototypen sind eine spezielle (wenn auch die übliche) Form der Funktionsdeklaration in C, in C++ heißen die einfach Deklarationen.)</p>
<blockquote>
<p>Aber ich verstehe einfach nicht, wie man auf die Ausgabe kommt. Bis zur 3 bin ich noch dabei, aber danach bin ich verloren.</p>
</blockquote>
<p>Dann überleg dir doch erstmal, was für 5 rauskommt. Mal als Übung: Was kommt für 5, 4, 3, 2 raus? In der Reihenfolge. Und selber denken, nicht ausprobieren.</p>
<blockquote>
<p>Ich wäre echt dankbar, wenn mir jemand einmal genau erklären was mit der 3 im &quot;If-Bereich&quot; geschieht.</p>
</blockquote>
<p>Nichts besonderes eigentlich. Es steht alles da, du musst nur beim Selbstaufruf keinen Knoten im Gehirn bekommen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372721</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 18 Dec 2013 20:31:06 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 20:48:32 GMT]]></title><description><![CDATA[<p>Danke schon einmal für die fixen Antworten, fühlt euch dick gelobt!</p>
<p>Noch kurz zum Thema Funktionsprototyp: mein Prof hat das bei der Aufgabe extra dazugeschrieben, von daher bin ich auch davon ausgegangen, dass es sich um einen solchen handelt.</p>
<p>Also, einmal ganz ausführlich und langsam:</p>
<p>ich beginne mit der 2, die in die tuwas-Funktion eingesetzt wird.</p>
<p>wert= 2+1</p>
<p>Damit hätte wir dann schon einmal die 3 in der Ausgabe. Weiter geht's.</p>
<p>wert=3+tuwas(3)</p>
<p>Und jetzt springe ich nach wieder nach oben, um den tuwas-Wert von 3 herauszufinden.</p>
<p>wert= 3+1</p>
<p>Damit hätte ich dann die 4 in der Ausgabe.</p>
<p>..so geht das dann weiter bis zur 5.</p>
<p>wert= 5+1</p>
<p>Damit habe ich dann die 6 in der Ausgabe stehen und da 6 &gt; 5, fällt der if-Teil schon einmal flach.</p>
<p>Jetzt fehlt mir nur noch der Weg zur &quot;goldenen&quot; 18..ist halt die Summe aller bisherigen Zahlen, aber wo steht da der Befehl zur Addition?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372724</guid><dc:creator><![CDATA[matze917]]></dc:creator><pubDate>Wed, 18 Dec 2013 20:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 20:53:03 GMT]]></title><description><![CDATA[<p>matze917 schrieb:</p>
<blockquote>
<p>Jetzt fehlt mir nur noch der Weg zur &quot;goldenen&quot; 18..ist halt die Summe aller bisherigen Zahlen, aber wo steht da der Befehl zur Addition?</p>
</blockquote>
<p>Die Funktionen sind an der Stelle auch noch nicht zu Ende. Was gibt tuwas(5) zurück? Wohin kehrt tuwas(5) zurück? Was passiert dort mit dem Rückgabewert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372725</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 Dec 2013 20:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 20:53:22 GMT]]></title><description><![CDATA[<p>matze917 schrieb:</p>
<blockquote>
<p>Danke schon einmal für die fixen Antworten, fühlt euch dick gelobt!</p>
</blockquote>
<p>Du musst sie aber auch lesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<blockquote>
<p>Noch kurz zum Thema Funktionsprototyp: mein Prof hat das bei der Aufgabe extra dazugeschrieben, von daher bin ich auch davon ausgegangen, dass es sich um einen solchen handelt.</p>
</blockquote>
<p>Er meint das hier:</p>
<pre><code class="language-cpp">int tuwas(int wert);
</code></pre>
<p>Das hilft dir aber nicht, zu verstehen, wie die Funktion arbeitet, das ist nur die Deklaration, damit der Compiler in main schon weiß, wie er die Funktion aufrufen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372726</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 18 Dec 2013 20:53:22 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 20:56:16 GMT]]></title><description><![CDATA[<p>Bei jedem Funktionsaufruf bekommst du eine neue Variable wert.<br />
Die Alten sind aber nicht überschrieben oder gelöscht, sondern sind in &quot;ihrer&quot; Funktion gültig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372729</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Wed, 18 Dec 2013 20:56:16 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 20:57:03 GMT]]></title><description><![CDATA[<p>durch &quot;return wert&quot; wird der Wert zurückgegeben.</p>
<p>Ich steig da einfach nicht richtig durch. In einem Forum stand, dass die eine Funktion die Werte an die Hauptfunktion übergibt. Aber wie und wohin..ich versuche das ja selbst zu verstehen und nachzuvollziehen, aber ich komme da nicht weiter <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2372730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372730</guid><dc:creator><![CDATA[matze917]]></dc:creator><pubDate>Wed, 18 Dec 2013 20:57:03 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 21:02:18 GMT]]></title><description><![CDATA[<p>matze917 schrieb:</p>
<blockquote>
<p>In einem Forum stand, dass die eine Funktion die Werte an die Hauptfunktion übergibt.</p>
</blockquote>
<p>Nein, der Wert wird an die aufrufende Funktion zurückgegeben.<br />
Beim ersten Aufruf von tuwas(2) ist das die &quot;Hauptfunktion&quot; main(), aber bei allen weiteren Aufrufen wird der Wert an tuwas zurückgegeben.</p>
<p>tuwas(2) gibt 2+1+tuwas(3) zurück, tuwas(3) gibt 3+1+tuwas(4) zurück usw.<br />
Musst halt solange weiter machen, bis du alle noch unbekannten Funktionswerte kennst und dann kommst du letztendlich darauf, dass 2+1+tuwas(3) 18 ergibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372732</guid><dc:creator><![CDATA[ifsw]]></dc:creator><pubDate>Wed, 18 Dec 2013 21:02:18 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 21:12:49 GMT]]></title><description><![CDATA[<p>..ich hab mir das jetzt noch extra handschriftlich notiert..jeden einzelnen Schritt..</p>
<p>tuwas (2)<br />
wert=2+1<br />
=&gt; 3<br />
wert=3+tuwas(3)</p>
<p>tuwas (3)<br />
wert=3+1<br />
=&gt; 4</p>
<p>..und so weiter bis zur 5</p>
<p>tuwas (5)<br />
wert=5+1<br />
=&gt; 6</p>
<p>return wert</p>
<p>Wo steht da jetzt der Befehl zur Addition?<br />
Was genau sagt das &quot;return wert&quot; aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372735</guid><dc:creator><![CDATA[matze917]]></dc:creator><pubDate>Wed, 18 Dec 2013 21:12:49 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 21:22:55 GMT]]></title><description><![CDATA[<p>Du brauchst einen großen Zettel als Bildschirm und viele kleine für die Funktionen.</p>
<p>Nimm dir für jeden Funktionsaufruf einen neuen (kleinen) Zettel.<br />
Pack den auf den vorhandenen drauf.<br />
Rechne die Funktion durch (wenn da tuwas steht, dann neuen Zettel)<br />
Wenn da cout steht, schreibst du das auf deinen Bildschirm</p>
<p>Wenn du beim return ankommst nimmst du den Wert von wert, merkst ihn dir, nimmst den obersten Zettel weg und schreibst den Wert (auf dem jetzt obersten Zettel) dort hin, wo du vorher aufgehört hast.( Das ist da wo tuwas steht). Und rechnest auf diesem Zettel weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372736</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Wed, 18 Dec 2013 21:22:55 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 21:24:34 GMT]]></title><description><![CDATA[<p>Das return sorgt dafür, dass der Funktionsaufruf den Wert nach dem return annimmt (beendet gleichzeitig den Funktionsaufruf, aber das ist hier nebensächlich).</p>
<p>tuwas(2) in der main() steht für eine Zahl, genau wie cos(0) in der Mathematik für eine Zahl steht. Weil der Compiler noch nicht weiß, welche Zahl das ist, führt er tuwas(2) aus. Das erste return in der Funktion bestimmt diese Zahl.</p>
<p>Wichtig ist, dass all diese Funktionsaufrufe unabhängig voneinander sind (in dem Sinne, dass jeder seine eigene &quot;wert&quot;-Variable hat).</p>
<p>Also nochmal: main() ruft tuwas(2) auf.<br />
Der Wert davon ist 2+1+tuwas(3).<br />
Wir wissen nicht, was tuwas(3) ist, also müssen wir das auch erst ausrechenen:<br />
tuwas(3) ist 3+1+tuwas(4)<br />
tuwas(4) ist 4+1+tuwas(5)<br />
In tuwas(5) greift nun die if-Bedingung nicht mehr, also gibt tuwas(5) 6 zurück.<br />
Damit können wir nun den Wert von tuwas(4) bestimmen, nämlich 4+1+6=11.<br />
Dann auch von tuwas(3): 3+1+11=15<br />
Und tuwas(2): 2+1+15=18</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372737</guid><dc:creator><![CDATA[ifsw]]></dc:creator><pubDate>Wed, 18 Dec 2013 21:24:34 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 21:40:00 GMT]]></title><description><![CDATA[<p>hmm</p>
<p>also danke an Dirk für die Idee mit den Zetteln, hab ich gerade mit Post-it's gemacht und bin auch darauf gekommen. Hatte ganz zum Anfang auch diesen Weg im Sinn. Hatte dann aber gedacht, dass der Kompiler sicherlich nicht noch einmal rückwärts rechnet..aber anscheinend ja schon^^</p>
<p>Hatte mir jetzt aber irgendwie &quot;mehr&quot; von der Aufgabe selbst erwartet.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Frage b) ist, wie der Fachbegriff für die Art des Funktionsaufrufes ist. Die richtige Antwort wäre dann &quot;Rekursion&quot;?</p>
<p>Ich danke allen Beteiligten für ihre Geduld, aus anderen Foren ist man da anderes gewohnt..</p>
<p>und noch eine letzte Frage:</p>
<p>Warum wird &quot;Ergebnis&quot; nicht zuerst ausgegeben? Schließlich steht es doch vor tuwas(2) in main?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372740</guid><dc:creator><![CDATA[matze917]]></dc:creator><pubDate>Wed, 18 Dec 2013 21:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 22:27:15 GMT]]></title><description><![CDATA[<p>matze917 schrieb:</p>
<blockquote>
<p>Warum wird &quot;Ergebnis&quot; nicht zuerst ausgegeben? Schließlich steht es doch vor tuwas(2) in main?</p>
</blockquote>
<p>Die Frage ist berechtigt, aber ich hoffe nicht, dass der Professor erwartet, dass ihr das im Detail erklären könnt.<br />
Letztendlich läuft es darauf hinaus, dass die Sprache dem Compiler freistellt, in welcher Reihenfolge er die Parameter eines Funktionsaufruf auswertet.<br />
Je nachdem, ob er tuwas(2) zuerst auswertet oder nicht, wird entweder <code>3,4,5,6, Ereignis: 18</code> oder <code>Ereignis: 3,4,5,6,18</code> ausgegeben.</p>
<p>Und ja, die Kette von &lt;&lt; sind letztendlich verschachtelte Funktionsaufrufe von operator&lt;&lt;, auch wenn es nicht so aussieht.</p>
<p>Aber das ist eher einer der Schattenseiten von C++, mit der man sich in der Praxis nur soweit auseinandersetzt, als dass man sie umgeht (indem man nicht mehrere Funktionsaufrufe mit Seiteneffekten in den gleichen Ausdruck packt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372746</guid><dc:creator><![CDATA[ifsw]]></dc:creator><pubDate>Wed, 18 Dec 2013 22:27:15 GMT</pubDate></item><item><title><![CDATA[Reply to Eine wahrscheinlich ganz dumme Anfängerfrage on Wed, 18 Dec 2013 22:36:21 GMT]]></title><description><![CDATA[<p>okay, dann halte ich mich damit nicht länger auf. Bin jetzt schon drei Aufgaben weiter und es läuft wieder fast einwandfrei.</p>
<p>Danke für die ganzen Antworten, ihr seid eine super Hilfe!</p>
<p>Kann hiermit geschlossen werden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372747</guid><dc:creator><![CDATA[matze917]]></dc:creator><pubDate>Wed, 18 Dec 2013 22:36:21 GMT</pubDate></item></channel></rss>