<?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[Alle Möglichkeiten ausgeben]]></title><description><![CDATA[<p>Hallo miteinander.</p>
<p>Ich möchte ein Programm schreiben das alle Möglichkeiten für die Kombination</p>
<pre><code>Vokal Konsonant Vokal Konsonant Vokal .....
</code></pre>
<p>ausgibt.<br />
Doch bisher habe ich bis auf 2 Arrays für Vokale und Konsonanten und eine Schleife die angibt, wieviele Stellen ich berechnen will nicht viel hinbekommen.<br />
Ich komme einfach auf keinen Ansatz, ich habe zwar bisher an etwas an Rekursion gedacht, will aber einfach nicht darauf kommen, wie ich anfangen soll.<br />
Ein kleiner Schubs in die richtige Richtung wäre nett <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/287774/alle-möglichkeiten-ausgeben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 07:50:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287774.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Jun 2011 18:45:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 18:45:48 GMT]]></title><description><![CDATA[<p>Hallo miteinander.</p>
<p>Ich möchte ein Programm schreiben das alle Möglichkeiten für die Kombination</p>
<pre><code>Vokal Konsonant Vokal Konsonant Vokal .....
</code></pre>
<p>ausgibt.<br />
Doch bisher habe ich bis auf 2 Arrays für Vokale und Konsonanten und eine Schleife die angibt, wieviele Stellen ich berechnen will nicht viel hinbekommen.<br />
Ich komme einfach auf keinen Ansatz, ich habe zwar bisher an etwas an Rekursion gedacht, will aber einfach nicht darauf kommen, wie ich anfangen soll.<br />
Ein kleiner Schubs in die richtige Richtung wäre nett <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2072977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072977</guid><dc:creator><![CDATA[Anfängernoob]]></dc:creator><pubDate>Fri, 03 Jun 2011 18:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 18:51:48 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for(std::size_t i = 0; i &lt; Vokale.size(); i++)
  for(std::size_t j = 0; j &lt; Konsonanten.size(); j++)
    std::cout &lt;&lt; Vokale[i] &lt;&lt; &quot; &quot; &lt;&lt; Konsonanten[j] &lt;&lt; &quot;\n&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2072982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072982</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Fri, 03 Jun 2011 18:51:48 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 18:57:31 GMT]]></title><description><![CDATA[<p>Damit kann ich nur zwei Stellen berechnen.<br />
Aber was muss ich anstellen, damit ich von 1-10 Stellen alle berechnen kann?<br />
Dafür kommt mir kein Ansatz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072985</guid><dc:creator><![CDATA[Anfängernoob]]></dc:creator><pubDate>Fri, 03 Jun 2011 18:57:31 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 19:16:14 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

char vowels[] = &quot;aeiou&quot;;
char consonants[] = &quot;bcdfghjklmnpqrstvwxyz&quot;;

void print_permutations(int length, char * buff = 0, char * start = 0)
{
    if (!length)
    {
        if (start)
            std::cout &lt;&lt; start &lt;&lt; std::endl;
        return;
    }
    char * buffer = buff ? buff : new char [length + 1];
    start = start ? start : buffer;
    for (char * p = (length % 2 ? consonants : vowels); *p; ++p)
    {
        *buffer = *p;
        print_permutations(length - 1, buffer + 1, start);
    }
    if (!buff)
        delete[] buffer;
}

int main(void)
{
    print_permutations(10);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2072988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072988</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Fri, 03 Jun 2011 19:16:14 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 19:13:03 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10459">@DrakoXP</a> Bei einem C-Code kann man kein <code>new</code> oder <code>delete</code> aufrufen. Und es sollte <code>printf</code> statt <code>cout</code> heissen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072991</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Fri, 03 Jun 2011 19:13:03 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 19:16:44 GMT]]></title><description><![CDATA[<p>seit wann is das C Code?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072993</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Fri, 03 Jun 2011 19:16:44 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 19:18:34 GMT]]></title><description><![CDATA[<p>DrakoXP schrieb:</p>
<blockquote>
<p>seit wann is das C Code?</p>
</blockquote>
<p>Seit du keinen <code>std::string</code> für die Zeichenkettenverarbeitung verwendest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072995</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Fri, 03 Jun 2011 19:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 19:22:15 GMT]]></title><description><![CDATA[<p>Danke Drako, ich werde versuchen da mal was durchzublicken.<br />
Allerdings gibt Ideone einen Runtimeerror (sehr wahrscheinlich wegen Endlosrekusion) und auch ansonsten nicht wirklich das gewünschte aus.<br />
<a href="http://ideone.com/wdD2e" rel="nofollow">http://ideone.com/wdD2e</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072999</guid><dc:creator><![CDATA[Anfängernoob]]></dc:creator><pubDate>Fri, 03 Jun 2011 19:22:15 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 19:54:24 GMT]]></title><description><![CDATA[<p>Anfängernoob schrieb:</p>
<blockquote>
<p>Danke Drako, ich werde versuchen da mal was durchzublicken.<br />
Allerdings gibt Ideone einen Runtimeerror (sehr wahrscheinlich wegen Endlosrekusion) und auch ansonsten nicht wirklich das gewünschte aus.<br />
<a href="http://ideone.com/wdD2e" rel="nofollow">http://ideone.com/wdD2e</a></p>
</blockquote>
<p>Der Runtimeerror ist, weil das Programm zu lange dauert. Bei 10 Buchstaben gibt es zu viele Kombinationen, ideone bricht offenbar das Prgramm irgendwann ab.<br />
Mit 4 Buchstaben (<a href="http://ideone.com/CfCWa" rel="nofollow">klick</a>) sieht das schon viel besser aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073011</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Fri, 03 Jun 2011 19:54:24 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 20:13:24 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/25179">@EOutOfResources</a>:</p>
<p>std::string hielt ich hier für unangemenessen:</p>
<p>Für Konsonanten und Vokale zum einen, da es im logischen Sinne nicht um Zeichenketten geht.<br />
Ich hätte auch einfach char arrays nehmen können,<br />
hätte dann aber auch die Länge mit angeben müssen...<br />
war also einfach eine abkürzung...</p>
<p>Für den Puffer hätten std::string's sinnlosen Performance overhead erzeugt,<br />
wegen unnötiger Allokationen und Kopien...</p>
<p>Desweiteren heißt C++ zu Programmieren nicht, dass man immer auf Teufel komm raus Standard-Bibliothek Klassen verwenden muss.<br />
C++ als Multiparadigmen-Sprache sollte man der Situation angemessen verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073014</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Fri, 03 Jun 2011 20:13:24 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 20:30:03 GMT]]></title><description><![CDATA[<p>DrakoXP schrieb:</p>
<blockquote>
<p>Desweiteren heißt C++ zu Programmieren nicht, dass man immer auf Teufel komm raus Standard-Bibliothek Klassen verwenden muss.<br />
C++ als Multiparadigmen-Sprache sollte man der Situation angemessen verwenden.</p>
</blockquote>
<p>Gib Dir keine Mühe. DAS werden manche hier nicht mehr lernen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073017</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 03 Jun 2011 20:30:03 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Möglichkeiten ausgeben on Fri, 03 Jun 2011 20:38:58 GMT]]></title><description><![CDATA[<p>Ich finde es in solchen Fällen übersichtlicher, die Verwaltung in eine Kopffunktion auszulagern - zumal man sich damit die ganzen Prüfungen ersparen kann, was bei einem exponentiell skalierenden Algorithmus (126 * (105<sup>n/2</sup> - 1) / 104 + 1 Funktionsaufrufe) nicht zu verachten ist. Dann lässt sich auch std::string ohne Kopien verwenden:</p>
<pre><code class="language-cpp">#include &lt;cstddef&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;

void print_combos_rec(std::string &amp;data, std::size_t pos) {
  static char const *const vowels     = &quot;aeiou&quot;;
  static char const *const consonants = &quot;bcdfghjklmnpqrstvwxyz&quot;;

  if(pos == data.size()) {
    std::cout &lt;&lt; data &lt;&lt; '\n';
  } else {
    for(char const *p = pos % 2 == 0 ? consonants : vowels; *p; ++p) {
      data[pos] = *p;
      print_combos_rec(data, pos + 1);
    }
  }
}

void print_combos(std::size_t len) {
  std::string buffer(len, ' ');
  print_combos_rec(buffer, 0);
}

int main() {
  print_combos(4);
}
</code></pre>
<p>So oder so ist aber aufgrund der schieren Menge an Lösungen eine zweistellige Länge völlig unrealistisch - schon bei einer Länge von 10 gibt es über 12 Milliarden Lösungen, für die über 15 Milliarden mal die Funktion durchlaufen werden müsste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073021</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Fri, 03 Jun 2011 20:38:58 GMT</pubDate></item></channel></rss>