<?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[Problem mit dem Thema Funktionen!]]></title><description><![CDATA[<p>Also ich bin noch ein echter C++ Anfänger und habe ein Problem.<br />
Ich möchte ein Porgramm schreiben mit einer rekursiven Funktion, das eine Zeichenkette einließt und ein Zeichen. Danach soll gesucht werden ob das Zeichen in der Zeichenkette vorkommt, ohne Verwendung einer Schleife.<br />
Ich habe dieses Programm geschrieben, aber es funktioniert nicht.</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
char kette[80];<br />
char zeichen;<br />
bool fkt(int kette, char zeichen) {<br />
if (kette!=zeichen) return false;<br />
else return true;<br />
kette++;<br />
}<br />
int main () {<br />
cout &lt;&lt; &quot; Bitte geben Sie die Zeichenkette ein: &quot;;<br />
cin &gt;&gt; kette;<br />
cout &lt;&lt; &quot; Bitte geben Sie das Zeichen ein: &quot;;<br />
cin &gt;&gt; zeichen;<br />
if (!fkt(kette,zeichen))<br />
cout &lt;&lt; &quot; Das Zeichen kommt in der Zeichenkette nicht vor&quot;;<br />
else<br />
cout &lt;&lt; &quot; Das Zeichen &quot; &lt;&lt; zeichen &lt;&lt; &quot; kommt in der Zeichenkette vor &quot;;<br />
return 0;<br />
}</p>
<p>Es kommt immer eine Fehlermeldung: Invalid conversation</p>
<p>Ich wäre sehr dankbar, wenn mir jemand helfen könnte.</p>
<p>Vielen Dank im Vorraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212702/problem-mit-dem-thema-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 17:24:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212702.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 May 2008 11:48:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit dem Thema Funktionen! on Fri, 09 May 2008 11:48:05 GMT]]></title><description><![CDATA[<p>Also ich bin noch ein echter C++ Anfänger und habe ein Problem.<br />
Ich möchte ein Porgramm schreiben mit einer rekursiven Funktion, das eine Zeichenkette einließt und ein Zeichen. Danach soll gesucht werden ob das Zeichen in der Zeichenkette vorkommt, ohne Verwendung einer Schleife.<br />
Ich habe dieses Programm geschrieben, aber es funktioniert nicht.</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
char kette[80];<br />
char zeichen;<br />
bool fkt(int kette, char zeichen) {<br />
if (kette!=zeichen) return false;<br />
else return true;<br />
kette++;<br />
}<br />
int main () {<br />
cout &lt;&lt; &quot; Bitte geben Sie die Zeichenkette ein: &quot;;<br />
cin &gt;&gt; kette;<br />
cout &lt;&lt; &quot; Bitte geben Sie das Zeichen ein: &quot;;<br />
cin &gt;&gt; zeichen;<br />
if (!fkt(kette,zeichen))<br />
cout &lt;&lt; &quot; Das Zeichen kommt in der Zeichenkette nicht vor&quot;;<br />
else<br />
cout &lt;&lt; &quot; Das Zeichen &quot; &lt;&lt; zeichen &lt;&lt; &quot; kommt in der Zeichenkette vor &quot;;<br />
return 0;<br />
}</p>
<p>Es kommt immer eine Fehlermeldung: Invalid conversation</p>
<p>Ich wäre sehr dankbar, wenn mir jemand helfen könnte.</p>
<p>Vielen Dank im Vorraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506058</guid><dc:creator><![CDATA[kirchi123]]></dc:creator><pubDate>Fri, 09 May 2008 11:48:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit dem Thema Funktionen! on Fri, 09 May 2008 11:58:23 GMT]]></title><description><![CDATA[<p>kirchi123 schrieb:</p>
<blockquote>
<p>bool fkt(int kette, char zeichen) {<br />
if (kette!=zeichen) return false;<br />
else return true;<br />
kette++;<br />
}</p>
</blockquote>
<p>Das ist so auch noch keine rekursive funktion.</p>
<p>Eine Rekursive funktion ruft sich selbst auf, deine gibt aber lediglich<br />
true oder false zurück anstatt sich selbst nochmals aufzurufen um den<br />
nächsten Wert in kette zu überprüfen.</p>
<p>An die Stelle kette++ kommt dein Programm nie, da du immer vorher schon<br />
mit return die funktion beendest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506069</guid><dc:creator><![CDATA[dark-eye]]></dc:creator><pubDate>Fri, 09 May 2008 11:58:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit dem Thema Funktionen! on Fri, 09 May 2008 12:03:29 GMT]]></title><description><![CDATA[<p>Benutz in Zukunft CPP-Tags.<br />
Ich hab einige Fehler mal auskommentiert:</p>
<p>kirchi123 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;
	char kette[80];
	char zeichen;
	bool fkt(int kette, char zeichen) {
	if (kette!=zeichen) return false; // du überprüfst hier ob das Zeichen gleich ist wie die ganze Kette.
// Das kann ja nicht true sein, zumal kette ein Array repräsentiert.
     		else return true;
	kette++; // wird niemals ausgeführt, da bereits ein Wert zurückgegeben wurde.
	} // Eine Funktion ist erst dann rekursiv, wenn sie sich selber aufruft (was deine aber nicht tut).
	int main () {
	cout &lt;&lt; &quot; Bitte geben Sie die Zeichenkette ein: &quot;;
	cin &gt;&gt; kette;
	cout &lt;&lt; &quot; Bitte geben Sie das Zeichen ein: &quot;;
	cin &gt;&gt; zeichen;
	if (!fkt(kette,zeichen))
		cout &lt;&lt; &quot; Das Zeichen kommt in der Zeichenkette nicht vor&quot;;
	else
		cout &lt;&lt; &quot; Das Zeichen &quot; &lt;&lt; zeichen &lt;&lt; &quot; kommt in der Zeichenkette vor &quot;;
	return 0;
}
</code></pre>
</blockquote>
<p>Ich würd dir allerdings nicht empfehlen, eine rekursive Funktion zu schreiben, nur um Schleifen zu vermeiden. Die Performance ist schlechter, es kann bei grossen Rekursionstiefen zu Stack-Überläufen kommen, zudem muss auch mehr Code geschrieben werden.<br />
Ich hab trotzdem mal eine Möglichkeit aufgeschrieben (ich habs nicht getestet, hoffe es hat keine Fehler drin):</p>
<pre><code class="language-cpp">bool fkt(int kette[80], char zeichen, int index = 0)
{
    if (kette[index] != zeichen)
    {
        index++;
        if (index == 80)
           return false;
        fkt(kette, zeichen, index);
    }
    else
        return true;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1506072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506072</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 09 May 2008 12:03:29 GMT</pubDate></item></channel></rss>