<?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[Schleife etwas &amp;quot;schöner&amp;quot; und &amp;quot;effektiver&amp;quot; gestalten?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab folgende Aufgabe: Durchlaufen Sie ein Array und zählen sie deren Anzahl Elemente auf. Ist zwischen einem Element und dem übernächsten ein anderer Wert, muss dieses Element seperat gezählt werden. Die gezählten Daten sollen in einem seperaten Array abgelegt werden um sie z. B. an eine Funktion zu übergeben und erst am Ende des Programms ausgegeben werden. Ausnahme bei der Ausgabe sind Nullen. Das Array enthält folgende Werte die gezählt werden sollen:<br />
2, 1, 1, 1, 400, 2, 1, 0, 100, 100</p>
<p>Soweit sogut, ich hab daraufhin folgendes gecodet:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

const unsigned long array_size = 10;
const unsigned long number_mode = 0;
const unsigned long number_count = 1;

int main (void)
{
    unsigned long array[array_size] = { 2, 1, 1, 1, 400, 2, 1, 0, 100, 100 };
    unsigned long number[2][array_size] = { 0 };

    for (unsigned long i = 0, position = 0; i &lt; array_size; ++i)
    {
        if (array[i] == 0)
            continue;

        if (position == 0)
        {
            number[number_mode][position] = array[i];
            number[number_count][position++]++;
            continue;
        }

        if (number[number_mode][position - 1] == array[i])
        {
            number[number_count][position - 1]++;
            continue;
        }

        number[number_mode][position] = array[i];
        number[number_count][position]++;

        position++;
    }

    for (unsigned long i = 0; i &lt; array_size; ++i)
    {
        if (number[number_mode][i] == 0)
            continue;

        std::cout &lt;&lt; number[number_mode][i] &lt;&lt; &quot;: &quot; &lt;&lt; number[number_count][i] &lt;&lt; std::endl;
    }

    return 0;
}
</code></pre>
<p>Laut meinem Lösungsblatt ist die ausgabe wie folgt richtig:</p>
<pre><code>2: 1
1: 3
400: 1
2: 1
1: 1
100: 2
</code></pre>
<p>Aber ich bin mit diesem Code absolut unzufrieden. Wie kann ich den Code etwas &quot;schöner&quot; machen oder sogar optimieren?</p>
<p>Schon mal ein Danke im voraus. <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>
<p>Euer Arrayler</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178019/schleife-etwas-quot-schöner-quot-und-quot-effektiver-quot-gestalten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 16:31:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178019.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Apr 2007 14:18:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schleife etwas &amp;quot;schöner&amp;quot; und &amp;quot;effektiver&amp;quot; gestalten? on Fri, 06 Apr 2007 14:18:25 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab folgende Aufgabe: Durchlaufen Sie ein Array und zählen sie deren Anzahl Elemente auf. Ist zwischen einem Element und dem übernächsten ein anderer Wert, muss dieses Element seperat gezählt werden. Die gezählten Daten sollen in einem seperaten Array abgelegt werden um sie z. B. an eine Funktion zu übergeben und erst am Ende des Programms ausgegeben werden. Ausnahme bei der Ausgabe sind Nullen. Das Array enthält folgende Werte die gezählt werden sollen:<br />
2, 1, 1, 1, 400, 2, 1, 0, 100, 100</p>
<p>Soweit sogut, ich hab daraufhin folgendes gecodet:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

const unsigned long array_size = 10;
const unsigned long number_mode = 0;
const unsigned long number_count = 1;

int main (void)
{
    unsigned long array[array_size] = { 2, 1, 1, 1, 400, 2, 1, 0, 100, 100 };
    unsigned long number[2][array_size] = { 0 };

    for (unsigned long i = 0, position = 0; i &lt; array_size; ++i)
    {
        if (array[i] == 0)
            continue;

        if (position == 0)
        {
            number[number_mode][position] = array[i];
            number[number_count][position++]++;
            continue;
        }

        if (number[number_mode][position - 1] == array[i])
        {
            number[number_count][position - 1]++;
            continue;
        }

        number[number_mode][position] = array[i];
        number[number_count][position]++;

        position++;
    }

    for (unsigned long i = 0; i &lt; array_size; ++i)
    {
        if (number[number_mode][i] == 0)
            continue;

        std::cout &lt;&lt; number[number_mode][i] &lt;&lt; &quot;: &quot; &lt;&lt; number[number_count][i] &lt;&lt; std::endl;
    }

    return 0;
}
</code></pre>
<p>Laut meinem Lösungsblatt ist die ausgabe wie folgt richtig:</p>
<pre><code>2: 1
1: 3
400: 1
2: 1
1: 1
100: 2
</code></pre>
<p>Aber ich bin mit diesem Code absolut unzufrieden. Wie kann ich den Code etwas &quot;schöner&quot; machen oder sogar optimieren?</p>
<p>Schon mal ein Danke im voraus. <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>
<p>Euer Arrayler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260654</guid><dc:creator><![CDATA[Arrayler]]></dc:creator><pubDate>Fri, 06 Apr 2007 14:18:25 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife etwas &amp;quot;schöner&amp;quot; und &amp;quot;effektiver&amp;quot; gestalten? on Fri, 06 Apr 2007 17:13:05 GMT]]></title><description><![CDATA[<p>oh, hab ganz überlesen, daß das ergebnis in einem array landen soll. vielleicht dann sowas.</p>
<pre><code class="language-cpp">//ungetestet
#include &lt;iostream&gt;

const unsigned long array_size = 10;
const unsigned long number_mode = 0;
const unsigned long number_count = 1;

int main (void)
{
    unsigned long array[array_size] = { 2, 1, 1, 1, 400, 2, 1, 0, 100, 100 };

//&lt;ins&gt;
    unsigned long number[2][array_size] = { 0 };
//&lt;/ins&gt;
    unsigned long value=0;
    unsigned long count=0;

    for (unsigned long i = 0, position = 0; i &lt; array_size; ++i)
    {
        if(array[i]==value){
            ++count;
        }
        else{
            if(value!=0){
//&lt;del&gt;               cout&lt;&lt;value&lt;&lt;count;&lt;/del&gt;
//&lt;ins&gt;
               number[writePos][0]=value;
               number[writePos][1]=count;
//&lt;/ins&gt;
            }
            value=array[i];
            count=1;
        }
    }
//&lt;ins&gt;
    anzeige(number,writePos);
//&lt;/ins&gt;
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1260674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260674</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 06 Apr 2007 17:13:05 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife etwas &amp;quot;schöner&amp;quot; und &amp;quot;effektiver&amp;quot; gestalten? on Fri, 06 Apr 2007 15:15:35 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>der code ist wunderbar, aber leider kann ich dann die werte nicht in Arrayform an eine Funktion weitergeben und sie nicht am Ende des Programms ausführen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260704</guid><dc:creator><![CDATA[Arrayler]]></dc:creator><pubDate>Fri, 06 Apr 2007 15:15:35 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife etwas &amp;quot;schöner&amp;quot; und &amp;quot;effektiver&amp;quot; gestalten? on Fri, 06 Apr 2007 15:41:36 GMT]]></title><description><![CDATA[<p>na dann nutz doch einen std::vector</p>
<p>und cout &lt;&lt; value &lt;&lt; endl tauschst du aus durch push_back(value)</p>
<p>den übergibst du dann an die funktion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260734</guid><dc:creator><![CDATA[nabend]]></dc:creator><pubDate>Fri, 06 Apr 2007 15:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife etwas &amp;quot;schöner&amp;quot; und &amp;quot;effektiver&amp;quot; gestalten? on Fri, 06 Apr 2007 21:08:58 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>: dein code ist fehlerhaft</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260927</guid><dc:creator><![CDATA[nabend]]></dc:creator><pubDate>Fri, 06 Apr 2007 21:08:58 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife etwas &amp;quot;schöner&amp;quot; und &amp;quot;effektiver&amp;quot; gestalten? on Fri, 06 Apr 2007 22:07:34 GMT]]></title><description><![CDATA[<p>nabend schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>: dein code ist fehlerhaft</p>
</blockquote>
<p>kann sein. ist ja auch //ungetestet und nur so als lieferand einer idee eines anderen vorgehens zu verstehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260956</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 06 Apr 2007 22:07:34 GMT</pubDate></item></channel></rss>