<?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[Funktionsweise unverständlich]]></title><description><![CDATA[<p>Hallo,</p>
<p>warum wird in strAlphabet[i] erst über i das Alphabet in Kleinbuchstaben geschrieben. Würde die Zeile weggelassen werden nur kryptische Ascii Zeichen die ausserhalb des in der Forschleife angegebenen Bereichs ausgegeben.</p>
<pre><code class="language-cpp">char strAlphabet[26];

    for (i=97;i&lt;123;i++)
    {
        strAlphabet[i]= i; // Warum???
        //i = rand();
        cout &lt;&lt; strAlphabet[i]; 
    }
</code></pre>
<p>Ausserdem verstehe ich nicht wie ich rand() benutze. i = rand() führt zum Absturz. Geht die Funktion über die Größe des Arrays hinaus?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221524/funktionsweise-unverständlich</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 00:43:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221524.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 30 Aug 2008 17:26:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionsweise unverständlich on Sat, 30 Aug 2008 17:26:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>warum wird in strAlphabet[i] erst über i das Alphabet in Kleinbuchstaben geschrieben. Würde die Zeile weggelassen werden nur kryptische Ascii Zeichen die ausserhalb des in der Forschleife angegebenen Bereichs ausgegeben.</p>
<pre><code class="language-cpp">char strAlphabet[26];

    for (i=97;i&lt;123;i++)
    {
        strAlphabet[i]= i; // Warum???
        //i = rand();
        cout &lt;&lt; strAlphabet[i]; 
    }
</code></pre>
<p>Ausserdem verstehe ich nicht wie ich rand() benutze. i = rand() führt zum Absturz. Geht die Funktion über die Größe des Arrays hinaus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574042</guid><dc:creator><![CDATA[SpeicherFragezeichen]]></dc:creator><pubDate>Sat, 30 Aug 2008 17:26:34 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise unverständlich on Sat, 30 Aug 2008 17:38:08 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>SpeicherFragezeichen schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for (i=97;i&lt;123;i++)
{
    strAlphabet[i]= i; // Warum???
</code></pre>
</blockquote>
<p>dein index ist bei 97 - 122 du hast aber nur 0-25 zur verfügung. Du überschreibst erstens den speicher ausserhalb deines arrays (was zu einer stack corruption führt)</p>
<p>BR<br />
Vinzenz</p>
<p>//Edit quote tag repariert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574049</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Sat, 30 Aug 2008 17:38:08 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise unverständlich on Sat, 30 Aug 2008 17:38:06 GMT]]></title><description><![CDATA[<p>SpeicherFragezeichen schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>warum wird in strAlphabet[i] erst über i das Alphabet in Kleinbuchstaben geschrieben. Würde die Zeile weggelassen werden nur kryptische Ascii Zeichen die ausserhalb des in der Forschleife angegebenen Bereichs ausgegeben.</p>
<pre><code class="language-cpp">char strAlphabet[26];
    
    for (i=97;i&lt;123;i++)
    {
        strAlphabet[i]= i; // Warum???
        //i = rand();
        cout &lt;&lt; strAlphabet[i]; 
    }
</code></pre>
<p>Ausserdem verstehe ich nicht wie ich rand() benutze. i = rand() führt zum Absturz. Geht die Funktion über die Größe des Arrays hinaus?</p>
</blockquote>
<pre><code class="language-cpp">char strAlphabet[26];

    for (i=97;i&lt;123;i++)
    {
        strAlphabet[i-97]= i; // Darum!
        //i = rand();
        cout &lt;&lt; strAlphabet[i]; 
    }
</code></pre>
<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>
]]></description><link>https://www.c-plusplus.net/forum/post/1574050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574050</guid><dc:creator><![CDATA[ottoX]]></dc:creator><pubDate>Sat, 30 Aug 2008 17:38:06 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise unverständlich on Sat, 30 Aug 2008 17:39:47 GMT]]></title><description><![CDATA[<p>evilissimo schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>SpeicherFragezeichen schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for (i=97;i&lt;123;i++)
{
    strAlphabet[i]= i; // Warum???
</code></pre>
</blockquote>
<p>dein index ist bei 97 - 122 du hast aber nur 0-25 zur verfügung. Du überschreibst erstens den speicher ausserhalb deines arrays (was zu einer stack corruption führt)</p>
<p>BR<br />
Vinzenz</p>
<p>//Edit quote tag repariert</p>
</blockquote>
<pre><code class="language-cpp">char strAlphabet[26];

    for (i=97;i&lt;123;i++)
    {
        strAlphabet[i-97]= i; 
        //i = rand();
        cout &lt;&lt; strAlphabet[i-97]; 
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1574052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574052</guid><dc:creator><![CDATA[ottoX]]></dc:creator><pubDate>Sat, 30 Aug 2008 17:39:47 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise unverständlich on Sun, 31 Aug 2008 20:53:08 GMT]]></title><description><![CDATA[<p>SpeicherFragezeichen schrieb:</p>
<blockquote>
<p>Ausserdem verstehe ich nicht wie ich rand() benutze. i = rand() führt zum Absturz</p>
</blockquote>
<p>Du hast <code>srand( unsigned seed )</code> vergessen. Die funktion benötigst du da <code>rand()</code> nur eine pseudo-Zufallszahl generiert. schau dir mal den Artikel an: <a href="http://www.cplusplus.com/reference/clibrary/cstdlib/rand.html" rel="nofollow">http://www.cplusplus.com/reference/clibrary/cstdlib/rand.html</a><br />
Edit: quote tags</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574387</guid><dc:creator><![CDATA[double *T]]></dc:creator><pubDate>Sun, 31 Aug 2008 20:53:08 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise unverständlich on Mon, 01 Sep 2008 18:34:26 GMT]]></title><description><![CDATA[<p>Danke für <a href="http://www.cplusplus.com/reference/clibrary/cstdlib/rand.html" rel="nofollow">http://www.cplusplus.com/reference/clibrary/cstdlib/rand.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574964</guid><dc:creator><![CDATA[SpeicherFragezeichen]]></dc:creator><pubDate>Mon, 01 Sep 2008 18:34:26 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise unverständlich on Mon, 01 Sep 2008 18:51:26 GMT]]></title><description><![CDATA[<p>Warum ist immer noch etwas falsch?</p>
<p>Ich hatte vor, dass das Alphabet nicht sortiert ausggeben wird, sondern nach Zufallsprinzip.</p>
<p>Danke.</p>
<pre><code class="language-cpp">int i,j;
    char strAlphabet[26];

    for (i=97;i&lt;123;i++)
    {
        strAlphabet[i-97]= i;
        srand ( time(NULL) );
        i = rand() % 25 + 1;
        cout &lt;&lt; strAlphabet[i-97];
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1574976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574976</guid><dc:creator><![CDATA[SpeicherFragezeichen]]></dc:creator><pubDate>Mon, 01 Sep 2008 18:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise unverständlich on Mon, 01 Sep 2008 19:03:48 GMT]]></title><description><![CDATA[<p>SpeicherFragezeichen schrieb:</p>
<blockquote>
<p>Warum ist immer noch etwas falsch?</p>
<p>Ich hatte vor, dass das Alphabet nicht sortiert ausggeben wird, sondern nach Zufallsprinzip.</p>
<p>Danke.</p>
<pre><code class="language-cpp">int i,j;
    char strAlphabet[26];
    
    for (i=97;i&lt;123;i++)
    {
        strAlphabet[i-97]= i;
        srand ( time(NULL) );
        i = rand() % 25 + 1;
        cout &lt;&lt; strAlphabet[i-97];
    }
</code></pre>
</blockquote>
<p>Ach du scheisse!</p>
<p>Erstmal musst du dein Alphabet erzeugen. Du kannst nicht während des Vorgangs schon auf spätere Elemente zugreifen, wenn es die noch gar nicht gibt.</p>
<p>Zudem sollte srand() nur einmal im Programm aufgerufen werden (am besten zu Beginn :P), also raus damit aus der Schleife. Dann weist du i einen neuen Wert zu, der dann im Array garantiert unter 123 (weil i - 97 &lt; 0) liegt =&gt; Endlosschleife. Wobei dein Index anschließend &lt; 0 ist =&gt; Undef. Verhalten.</p>
<p>Mach es lieber so:</p>
<pre><code class="language-cpp">srand(time(NULL));

int i,j;
char strAlphabet[26];

// Erstmal das Alphabet erzeugen
for (i=0;i&lt;26;i++)
    strAlphabet[i]= i + 97;

// &quot;Alphabet&quot; ausgeben
for (i=0;i&lt;26;i++) {
    j = rand() % 25 + 1;
    cout &lt;&lt; strAlphabet[j];
}
</code></pre>
<p>Dabei ist aber nicht garantiert, dass auch das gesamte Alphabet ausgegeben wird, es werden sehr wahrscheinlich Werte mehrmals vorkommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574989</guid><dc:creator><![CDATA[nasnfos]]></dc:creator><pubDate>Mon, 01 Sep 2008 19:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise unverständlich on Mon, 01 Sep 2008 19:13:09 GMT]]></title><description><![CDATA[<p>nasnfos schrieb:</p>
<blockquote>
<p>Dabei ist aber nicht garantiert, dass auch das gesamte Alphabet ausgegeben wird, es werden sehr wahrscheinlich Werte mehrmals vorkommen.</p>
</blockquote>
<p>Du kannst dich eigentlich drauf verlassen, dass wenigstens ein Wert mehrmals vorkommt. Deshalb rate ich auch zur Methode mit der STL:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;algorithm&gt;
#include &lt;ctime&gt;

int main() 
{
	// srand(), damit unterschiedliche Ergebnisse bei verschiedenen Programmdurchläufen
	srand(static_cast&lt;unsigned int&gt;(time(0)));

	// String anlegen und mit allen Buchstaben befüllen
	std::string Alphabet;
	for (char i = 'a'; i &lt;= 'z'; ++i)
	{
		Alphabet.push_back(i);
	}

	// Alphabet zufällig durchmischen
	std::random_shuffle(Alphabet.begin(), Alphabet.end());
}
</code></pre>
<p>Denn selber zufällig sortieren ist nicht gerade einfach. In <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-221670.html" rel="nofollow">diesem Thread</a> geht es übrigens um etwas ziemlich Ähnliches.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574996</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 01 Sep 2008 19:13:09 GMT</pubDate></item></channel></rss>