<?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[Char einfüger per Rekursion]]></title><description><![CDATA[<p>Hi ich hoffe, dass mir hier jemand helfen kann!</p>
<p>Ich muss an jeder stelle nacheinander ein X in ein String einfügen, dies aber per Rekursion.</p>
<p>Folgende Lösung habe ich, leider ohne Rekursion.</p>
<p>Hat einer von euch ne ahnung wie ich dies mit Rekursion lösen könnte?</p>
<p>Code:</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;string&gt;<br />
#include &lt;list&gt;</p>
<p>using namespace std;</p>
<p>list &lt;string&gt; allInsertions(char x, string s)<br />
{<br />
list &lt;string&gt; v;<br />
// Induktionsschritt s' = s + x<br />
int len = s.length() + 1;</p>
<p>for(int i=0; i &lt; len; i++) {<br />
// setze in den String das x an die Position: String-Iterator + i<br />
s.insert(s.begin()+i, x);<br />
// füge den neuen String an das Ende in die Liste v hinzu<br />
v.insert(v.end(), s);<br />
// lösche die alte Position von x im String<br />
s.erase(s.begin()+i);<br />
}</p>
<p>return v;<br />
}</p>
<p>int main()<br />
{<br />
string s = &quot;REKURSION!&quot;;<br />
list &lt;string&gt; l = allInsertions('X', s);</p>
<p>while(l.size() &gt; 0)<br />
{<br />
cout &lt;&lt; l.front() &lt;&lt; endl;<br />
l.pop_front();<br />
}</p>
<p>getchar();<br />
return 0;<br />
}</p>
<p>Danke schon mal im vorraus.</p>
<p>Sorry hatte was falsch erklärt!</p>
<p>Ausgabe soll so aussehen:</p>
<p>XREKURSION<br />
RXEKURSION<br />
REXKURSION<br />
REKXURSION<br />
REKUXRSION<br />
REKURXSION<br />
REKURSXION<br />
REKURSIXON<br />
REKURSIOXN<br />
REKURSIONX</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/131818/char-einfüger-per-rekursion</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 06:39:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/131818.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Jan 2006 09:24:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Char einfüger per Rekursion on Fri, 06 Jan 2006 09:42:56 GMT]]></title><description><![CDATA[<p>Hi ich hoffe, dass mir hier jemand helfen kann!</p>
<p>Ich muss an jeder stelle nacheinander ein X in ein String einfügen, dies aber per Rekursion.</p>
<p>Folgende Lösung habe ich, leider ohne Rekursion.</p>
<p>Hat einer von euch ne ahnung wie ich dies mit Rekursion lösen könnte?</p>
<p>Code:</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;string&gt;<br />
#include &lt;list&gt;</p>
<p>using namespace std;</p>
<p>list &lt;string&gt; allInsertions(char x, string s)<br />
{<br />
list &lt;string&gt; v;<br />
// Induktionsschritt s' = s + x<br />
int len = s.length() + 1;</p>
<p>for(int i=0; i &lt; len; i++) {<br />
// setze in den String das x an die Position: String-Iterator + i<br />
s.insert(s.begin()+i, x);<br />
// füge den neuen String an das Ende in die Liste v hinzu<br />
v.insert(v.end(), s);<br />
// lösche die alte Position von x im String<br />
s.erase(s.begin()+i);<br />
}</p>
<p>return v;<br />
}</p>
<p>int main()<br />
{<br />
string s = &quot;REKURSION!&quot;;<br />
list &lt;string&gt; l = allInsertions('X', s);</p>
<p>while(l.size() &gt; 0)<br />
{<br />
cout &lt;&lt; l.front() &lt;&lt; endl;<br />
l.pop_front();<br />
}</p>
<p>getchar();<br />
return 0;<br />
}</p>
<p>Danke schon mal im vorraus.</p>
<p>Sorry hatte was falsch erklärt!</p>
<p>Ausgabe soll so aussehen:</p>
<p>XREKURSION<br />
RXEKURSION<br />
REXKURSION<br />
REKXURSION<br />
REKUXRSION<br />
REKURXSION<br />
REKURSXION<br />
REKURSIXON<br />
REKURSIOXN<br />
REKURSIONX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958478</guid><dc:creator><![CDATA[chris35039]]></dc:creator><pubDate>Fri, 06 Jan 2006 09:42:56 GMT</pubDate></item><item><title><![CDATA[Reply to Char einfüger per Rekursion on Fri, 06 Jan 2006 09:32:18 GMT]]></title><description><![CDATA[<pre><code>string setzeX( string str )
{
  wenn länge von str == 1 return &quot;X&quot;;

  return (str - letztes zeichen) + &quot;X&quot;;
}
</code></pre>
<p>Bye, TGGC (<a href="http://tggc.tg.funpic.de/index.php" rel="nofollow">Das Jahr des Helden</a>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958486</guid><dc:creator><![CDATA[TGGC|_work]]></dc:creator><pubDate>Fri, 06 Jan 2006 09:32:18 GMT</pubDate></item><item><title><![CDATA[Reply to Char einfüger per Rekursion on Fri, 06 Jan 2006 11:20:30 GMT]]></title><description><![CDATA[<p>chris35039 schrieb:</p>
<blockquote>
<p>Hat einer von euch ne ahnung wie ich dies mit Rekursion lösen könnte?</p>
</blockquote>
<p>zum Beispiel so:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

void printMitX( const std::string&amp; txt, std::string::size_type pos )
{
    using namespace std;
    cout &lt;&lt; txt.substr( 0, pos ) &lt;&lt; 'X' &lt;&lt; txt.substr( pos, txt.size() ) &lt;&lt; endl;
    if( pos &lt; txt.size() )
        printMitX( txt, ++pos );
}

int main()
{
    printMitX( &quot;Rekursion&quot;, 0 );
    return 0;
}
</code></pre>
<p>.. es ist nicht unbedingt <strong>die</strong> Anwendung für Rekursion</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958578</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 06 Jan 2006 11:20:30 GMT</pubDate></item><item><title><![CDATA[Reply to Char einfüger per Rekursion on Fri, 06 Jan 2006 13:06:33 GMT]]></title><description><![CDATA[<p>Danke für die Antworten, das DIng ist leider nur, das ich nur in der allInseration Funktion was schreiben darf.<br />
Unser Prof hat uns kurz vor den ganzen Klausuren ne Hausarbeit reingeknallt bei der man die ohren anlegt.<br />
So wie ich es gepostet hatte läuft es ja, aber leider werde ich keine Punkte darauf bekommen weil es eben nicht Rekursiv ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958696</guid><dc:creator><![CDATA[chris35039]]></dc:creator><pubDate>Fri, 06 Jan 2006 13:06:33 GMT</pubDate></item><item><title><![CDATA[Reply to Char einfüger per Rekursion on Fri, 06 Jan 2006 14:01:52 GMT]]></title><description><![CDATA[<p>chris35039 schrieb:</p>
<blockquote>
<p>Danke für die Antworten, das DIng ist leider nur, das ich nur in der allInseration Funktion was schreiben darf.<br />
Unser Prof hat uns kurz vor den ganzen Klausuren ne Hausarbeit reingeknallt bei der man die ohren anlegt.<br />
So wie ich es gepostet hatte läuft es ja, aber leider werde ich keine Punkte darauf bekommen weil es eben nicht Rekursiv ist.</p>
</blockquote>
<p>Hallo Chris,</p>
<p>jetzt habe ich Deine Aufgabe erst richtig verstanden. Die Signatur von</p>
<pre><code class="language-cpp">std::list&lt; std::string &gt; allInsertions( char x, std::string s );
</code></pre>
<p>ist also eine Vorgabe. 'Hausarbeit' lösen sollten wir ja nicht; aber weil heute Freitag ist und ich frei habe <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>
<pre><code class="language-cpp">#include &lt;algorithm&gt;    // swap, copy
#include &lt;iostream&gt;
#include &lt;iterator&gt;     // ostream_iterator
#include &lt;list&gt;
#include &lt;string&gt;

std::list&lt; std::string &gt; allInsertions( char x, std::string s )
{
    using namespace std;
    string::size_type i = s.find( x );
    if( i == string::npos )
    {
        s = x + s;      // nicht gefunden, dann vorn einfügen
        i = 0;          // Pos von 'x' ist vorn
    }
    list&lt; string &gt; l( 1, s );
    if( ++i &lt; s.size()  )
    {
        swap( s[i-1], s[i] );
        l.splice( l.end(), allInsertions( x, s ) );
    }
    return l;
}

int main()
{
    using namespace std;
    list&lt; string &gt; l = allInsertions( 'X', &quot;Rekursion&quot; );
    copy( l.begin(), l.end(), ostream_iterator&lt; string &gt;( cout &lt;&lt; &quot;Die Liste:\n&quot;, &quot;\n&quot; ) );
    cout &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Grüße an Deinen Prof<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958783</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 06 Jan 2006 14:01:52 GMT</pubDate></item></channel></rss>