<?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[&amp;quot;Rate&amp;quot;programm]]></title><description><![CDATA[<p>Hallo,<br />
ich habe vor ein Programm zu schreiben, dass ein Wort, das ein Benutzer eingibt, &quot;errät&quot;.</p>
<p>Das Programm startet damit, dass ein ein Wort eingegeben wird:</p>
<pre><code>string wort;
cin&gt;&gt;wort;
</code></pre>
<p>Dann soll das Programm strings erstellen und diese mit dem Wort vergleichen</p>
<pre><code>string zeichenpool = &quot;abcdefghijklmnopqrstuvwxyz&quot;;
int zeichenpoollaenge = zeichenpool.size();
int a,stelle=0,end=0;

string aktuelleswort=&quot; &quot;;

while(end!=1)
{
    for(a=0;a&lt;zeichenpoollaenge;a++)
    {
        aktuelleswort[stelle]=zeichenpool[a];

        if(aktuelleswort == wort)
        {
            cout&lt;&lt;&quot;Das gesuchte Wort ist &quot;&lt;&lt;aktuelleswort;
            break;
            end=1;
        }
    }
aktuelleswort=aktuelleswort+&quot; &quot;; //string um eine stelle erweitern
stelle++;
aktuelleswort[stelle-1]=zeichenpool[0]; //vorletzte Stelle zurücksetzen
}
</code></pre>
<p>Mit diesem Code wird allerdings immer nur die letzte Stelle des Strings geändert.<br />
Wäre der Zeichenpool &quot;abc&quot;, wäre das Ergebnis also</p>
<pre><code>a
b
c
aa
ab
ac
aaa
aab
aac
aaaa
usw.
</code></pre>
<p>Mein Ziel ist es, dass er folgende strings erstellt:</p>
<pre><code>a
b
c
aa
ab
ac
ba
bb
bc
ca
cb
cc
aaa
aab
aac
aba
usw.
</code></pre>
<p>D.h. wenn er mit der letzten Stelle fertig ist (bis z), müsste er ja die Vorletzte um eins erhöhen (von a auf b) und dann wieder die letzte Stelle ändern (von a bis z).<br />
Wenn die vorletzte Stelle dann bis z geändert ist, müsste er die Vorvorletzte um eins erhöhen (von a auf b), die Vorletzte auf a zurücksetzen und die letzte Stelle wieder ändern.<br />
Allerdings weis ich nicht, wie ich dieses Verfahren in Code umsetzten soll.<br />
Ich könnte natürlich noch 19 weitere for-Schleifen um den Haupt-Codeteil machen, um dann halt 20 Stellen zu ändern. Aber das Programm soll mit (theoretisch) unendlich vielen Stellen arbeiten können.<br />
Hat jemand einen Tipp für mich, wie ich dieses Problem elegant lösen kann? Ich hoffe ihr versteht meine Frage <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/223783/quot-rate-quot-programm</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 21:42:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223783.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Sep 2008 22:18:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Tue, 30 Sep 2008 23:52:46 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe vor ein Programm zu schreiben, dass ein Wort, das ein Benutzer eingibt, &quot;errät&quot;.</p>
<p>Das Programm startet damit, dass ein ein Wort eingegeben wird:</p>
<pre><code>string wort;
cin&gt;&gt;wort;
</code></pre>
<p>Dann soll das Programm strings erstellen und diese mit dem Wort vergleichen</p>
<pre><code>string zeichenpool = &quot;abcdefghijklmnopqrstuvwxyz&quot;;
int zeichenpoollaenge = zeichenpool.size();
int a,stelle=0,end=0;

string aktuelleswort=&quot; &quot;;

while(end!=1)
{
    for(a=0;a&lt;zeichenpoollaenge;a++)
    {
        aktuelleswort[stelle]=zeichenpool[a];

        if(aktuelleswort == wort)
        {
            cout&lt;&lt;&quot;Das gesuchte Wort ist &quot;&lt;&lt;aktuelleswort;
            break;
            end=1;
        }
    }
aktuelleswort=aktuelleswort+&quot; &quot;; //string um eine stelle erweitern
stelle++;
aktuelleswort[stelle-1]=zeichenpool[0]; //vorletzte Stelle zurücksetzen
}
</code></pre>
<p>Mit diesem Code wird allerdings immer nur die letzte Stelle des Strings geändert.<br />
Wäre der Zeichenpool &quot;abc&quot;, wäre das Ergebnis also</p>
<pre><code>a
b
c
aa
ab
ac
aaa
aab
aac
aaaa
usw.
</code></pre>
<p>Mein Ziel ist es, dass er folgende strings erstellt:</p>
<pre><code>a
b
c
aa
ab
ac
ba
bb
bc
ca
cb
cc
aaa
aab
aac
aba
usw.
</code></pre>
<p>D.h. wenn er mit der letzten Stelle fertig ist (bis z), müsste er ja die Vorletzte um eins erhöhen (von a auf b) und dann wieder die letzte Stelle ändern (von a bis z).<br />
Wenn die vorletzte Stelle dann bis z geändert ist, müsste er die Vorvorletzte um eins erhöhen (von a auf b), die Vorletzte auf a zurücksetzen und die letzte Stelle wieder ändern.<br />
Allerdings weis ich nicht, wie ich dieses Verfahren in Code umsetzten soll.<br />
Ich könnte natürlich noch 19 weitere for-Schleifen um den Haupt-Codeteil machen, um dann halt 20 Stellen zu ändern. Aber das Programm soll mit (theoretisch) unendlich vielen Stellen arbeiten können.<br />
Hat jemand einen Tipp für mich, wie ich dieses Problem elegant lösen kann? Ich hoffe ihr versteht meine Frage <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1591156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591156</guid><dc:creator><![CDATA[g3bk47]]></dc:creator><pubDate>Tue, 30 Sep 2008 23:52:46 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 06:54:25 GMT]]></title><description><![CDATA[<p>Spiel mal ein bisschen mit der Länge des Strings und der aktuellen Position rum.<br />
So kannst du auch relativ leicht die Position Links, respektive Rechts verändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591225</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 01 Oct 2008 06:54:25 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 07:02:13 GMT]]></title><description><![CDATA[<p>Ich würde es so ungefähr machen. Die Implementierung ist zwar nicht ganz elegant, aber es funktioniert.</p>
<p>Das Problem mit den 20 verschachtelten Schleifen wird hier durch Rekursion (eine Funktion, die sich selbst aufruft heißt rekursiv) gelöst.</p>
<p>EDIT: Oh, du wolltest nur einen Tipp, dann lies lieber nicht weiter...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

//Diese Funktion führt die Erhöhung durch und verändert dabei auch die
//vorherigen Buchstaben, wenn nötig.
//Der Rückgabewert gibt an, ob der komplette String durchlaufen wurde, also
//ob die Länge erhöht werden muss
bool Increase(string &amp;text, size_t stelle, string const &amp;zeichenpool)
{
   //Wenn auf der Stelle, die man erhöhen will ein durchlauf fertig ist
   if(text[stelle] == zeichenpool[zeichenpool.size() - 1])
   {
      //Ersten Buchstaben an die Stelle schreiben
      text[stelle] = zeichenpool[0];
      //Wenn es noch einen Buchstaben vor unserer Stelle gibt
      if(stelle &gt; 0)
      {
          //diesen erhöhen
          return Increase(text, stelle - 1, zeichenpool);
      }
      else
      {
          return false;
      }
   }
   //Zeichen um eins erhöhen, indem man das momentane Zeichen findet und dann
   //das nächste wählt
   size_t position = zeichenpool.find_first_of(text[stelle]);
   text[stelle] = zeichenpool[position+1];
   return true;
}

int main()
{
   string wort;
   cin &gt;&gt; wort;
   string zeichenpool = &quot;abcdefghijklmnopqrstuvwxyz&quot;;
   string aktuellesWort = &quot;a&quot;;
   size_t const maxLength = 5; //Oder was auch immer...
   cout &lt;&lt; aktuellesWort &lt;&lt; &quot;\n&quot;;
   while(aktuellesWort.size() &lt;= maxLength)
   {
      //So wie der Rückgabewert von Increase definiert ist, läuft die Scheife solange, bis das Wort verlängert werden muss
      while(Increase(aktuellesWort, aktuellesWort.size() - 1, zeichenpool))
      {
          cout &lt;&lt; aktuellesWort &lt;&lt; &quot;\n&quot;;
          if(aktuellesWort == wort)
          {
              cout &lt;&lt; &quot;Erraten!&quot; &lt;&lt; endl;
              return 0;
          }
      }
      aktuellesWort += &quot;a&quot;;
      cout &lt;&lt; aktuellesWort &lt;&lt; endl;
      if(aktuellesWort == wort)
      {
          cout &lt;&lt; &quot;Erraten!&quot; &lt;&lt; endl;
          return 0;
      }
   }
   return 0;
}
</code></pre>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591226</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Wed, 01 Oct 2008 07:02:13 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 07:04:27 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich würde es so ungefähr machen. Die Implementierung ist zwar nicht ganz elegant, aber es funktioniert.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Du hast es erfasst. Deine Rekursion ist eine sehr grosse Schraube im Getriebe..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591227</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 01 Oct 2008 07:04:27 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 08:11:42 GMT]]></title><description><![CDATA[<p>Häßlich aber dafür ohne Rekursion. <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;string&gt;
#include &lt;iostream&gt;

using namespace std;

int main(){

    cout &lt;&lt; &quot;Zu erraten: &quot;;
    string target;
    cin &gt;&gt; target;

    for(int i = 1; i &lt;= target.length(); i++){
	string current(i, 'a');

	while(true){	    
	    if (current == target){
		cout &lt;&lt; &quot;Found: &quot; &lt;&lt; current &lt;&lt; endl;
		return 0;
	    }

	    int raise = i - 1;
	    bool raised = false;
	    while(raise &gt;= 0){
		if (current[raise] != 'z'){
		    current[raise]++;
		    raised = true;
		    break;
		}else{
		    current[raise] = 'a';
		    raise--;
		}
	    }
	    if (!raised){
		cout &lt;&lt; &quot;Not found with length &quot; &lt;&lt; i &lt;&lt; endl;
		break;
	    }
	}
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1591263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591263</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 01 Oct 2008 08:11:42 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 08:44:34 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<blockquote>
<p>Ich würde es so ungefähr machen. Die Implementierung ist zwar nicht ganz elegant, aber es funktioniert.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Du hast es erfasst. Deine Rekursion ist eine sehr grosse Schraube im Getriebe..</p>
</blockquote>
<p>Bei den ganzen Ausgaben wird das der Performance auch nicht mehr viel tun <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>EDIT: Wenn man die Ausgaben entfernt ergibt sich ungefähr ein Faktor 2 Laufzeit zu Fellhuhns Code. Allerdings benutze ich ja auch noch den Zeichenpool <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/1591272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591272</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Wed, 01 Oct 2008 08:44:34 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 09:13:36 GMT]]></title><description><![CDATA[<p>Mit Zeichenpool, immernoch ohne Rekursion. :p <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;string&gt;
#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int main(){

    string chars = &quot;abcdefghijklmnopqrstuvwxyz&quot;;

    cout &lt;&lt; &quot;Zu erraten: &quot;;
    string target;
    cin &gt;&gt; target;

    for(int i = 1; i &lt;= target.length(); i++){
	string current(i, chars[0]);
	vector&lt;unsigned int&gt; current_idx(i, 0);

	while(true){	    
	    if (current == target){
		cout &lt;&lt; &quot;Found: &quot; &lt;&lt; current &lt;&lt; endl;
		return 0;
	    }

	    int raise = i - 1;
	    bool raised = false;
	    while(raise &gt;= 0){
		if (current[raise] != chars[chars.length()-1]){
		    current_idx[raise]++;
		    current[raise] = chars[current_idx[raise&rsqb;&rsqb;;
		    raised = true;
		    break;
		}else{
		    current[raise] = chars[0];
		    current_idx[raise] = 0;
		    raise--;
		}
	    }
	    if (!raised){
		cout &lt;&lt; &quot;Not found with length &quot; &lt;&lt; i &lt;&lt; endl;
		break;
	    }
	}
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1591313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591313</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 01 Oct 2008 09:13:36 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 09:30:38 GMT]]></title><description><![CDATA[<p>Soeinen einfachen Brute-Force Algorithmus findest du zu Hauf im Netz. Such doch mal ein bisschen bei Google.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591325</guid><dc:creator><![CDATA[Machine]]></dc:creator><pubDate>Wed, 01 Oct 2008 09:30:38 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 11:14:15 GMT]]></title><description><![CDATA[<p>Edit: Hier mal eine Version, die nicht funktioniert: :p</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;

int main()

{
    char base_set[] = &quot;abcdefghijklmnopqrstuvvxuz&quot;;
    std::string str = &quot;hallo&quot;;

    std::vector&lt;char&gt; input(str.begin(), str.end());
    std::vector&lt;char&gt; compare(input.size());
    do
    {
        std::copy(base_set, base_set + compare.size(), compare.begin());
        if(std::equal(input.begin(), input.end(), compare.begin()))
        {
            std::cout &lt;&lt; &quot;Found sequence: &quot; &lt;&lt; std::string(compare.begin(), compare.end()) &lt;&lt; '\n';
            break;
        }
    }while(std::next_permutation(base_set, base_set + 26));

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1591356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591356</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 01 Oct 2008 11:14:15 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 10:21:55 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Abgesehen von den beiden Tippfehlern in der Zeichenfolge funktioniert es auch nicht. <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/1591364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591364</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 01 Oct 2008 10:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 10:54:20 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Abgesehen von den beiden Tippfehlern in der Zeichenfolge funktioniert es auch nicht. <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>
</blockquote>
<p>Tipfehler okay, aber wieso funktioniert es nicht?</p>
<p>Okay, stimmt. next_permutation gibt das net her...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591388</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 01 Oct 2008 10:54:20 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Wed, 01 Oct 2008 22:05:06 GMT]]></title><description><![CDATA[<p>Zugegeben die Rekursion ist sehr verlokend. <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>
<p>Sehr unintuiver Code:</p>
<pre><code class="language-cpp">std::string pool = &quot;abcdefghijklmnopqrstuwxyz&quot;;
	std::string word (3,' ');

	std::string::reverse_iterator it = word.rbegin ();
	std::string::iterator pit = pool.begin ();

	while (true)
	{
		if ( pit == pool.end () )
		{
			*it = *(pool.begin());
			++it;
			if (it == word.rend ())
				break;
			if( (*it) != ' ')
			{
				pit = std::find (pool.begin(),pool.end(),*it);
				++pit;
			}
			else
				pit = pool.begin();
			continue;
		}

		*it = *pit;	

		if ( it == word.rbegin () )
		{
			++pit;
		}
		else
			it = word.rbegin ();

		std::cout &lt;&lt; word &lt;&lt; &quot;\n&quot;;
	}
</code></pre>
<p>Aber mir ist noch eine andere sehr geschickte Implementierung eingefallen. Habe jetzt gerade nur keine Zeit die zu schreiben. Spätestens Morgen werde ich die aber posten. <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/1591776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591776</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 01 Oct 2008 22:05:06 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Thu, 02 Oct 2008 06:52:42 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a>:</p>
<p>Funzt nicht. Da kommen nicht alle Strings vor.<br />
Lass mal laufen und grep nach zb &quot;naf&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1591854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1591854</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 02 Oct 2008 06:52:42 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Rate&amp;quot;programm on Mon, 06 Oct 2008 05:40:02 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a>:</p>
<p>Funzt nicht. Da kommen nicht alle Strings vor.<br />
Lass mal laufen und grep nach zb &quot;naf&quot;.</p>
</blockquote>
<p>Hmm. Also ich finde da alles, oder wie meinst du das?<br />
Wenn ich da in der Schleife eine Bedingung mache und abbreche dann funktioniert das..</p>
<p>Sorry, dass es so lange gedauert hat, aber ich konnte am Freitag nicht mehr ins Netz..</p>
<p>Aber hier noch die kürzere Version:</p>
<pre><code class="language-cpp">void alg_3 (std::string pool , int digits )
{
	for ( int i = 0; i &lt; pow (static_cast&lt;float&gt;(pool.size ()),digits) ; ++i)
	{
		int nr = i;
		std::string out = &quot;&quot;;

		while ( nr )
		{
			out = pool[nr%(pool.size())]+out;
			nr/= pool.size ();
		}
		std::cout &lt;&lt; out &lt;&lt; &quot;\n&quot;;
	}
}
</code></pre>
<p>Was aber nicht heisst, dass der schneller ist. Ich habe es mal ein bischen getestet und es ist herausgekommen, dass dieser Algorithmus bei kleineren Zahlen recht viel schneller sein kann, also mein erster, aber bei einem grossen &quot;pool&quot; länger hat. (Siehe Modulo in der inneren Schlaufe + Division. Liegt wahrscheinlich daran, habe aber hier keinen Profiler, um das zu bestätigen..)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1593962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1593962</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 06 Oct 2008 05:40:02 GMT</pubDate></item></channel></rss>