<?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[Finde fehlende Zahl]]></title><description><![CDATA[<p>Hallo,</p>
<p>es soll die fehlende Zahl gefunden werden;</p>
<pre><code>const int size = 10;
	int arr[size] = {0,1,2,3,5,6,7,8,9,10};  // die Zahl 4 fehlt
        int arr1[size+1]={0};
        int fehlende_zahl = 0 ;

        for(int i = 0 ; i &lt; size ; i++)
        {
             arr[i] = 1;
        }

        for(int i = 0 ; i &lt; size+1 ; i++)
        {
            if( arr[i] == 0 ) {fehlende zahl = i ; break;}
        }
</code></pre>
<p>Um die fehlende Zahl zu finden brauch ich ca 2n Rechenschritte. Wenn einer weiß wie es noch schneller geht , kann er es gerne posten.<br />
ABer kann ich mir ehrlich gesagt nicht vorstellen <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/319758/finde-fehlende-zahl</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Jul 2026 03:39:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319758.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Sep 2013 22:12:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Finde fehlende Zahl on Sun, 01 Sep 2013 22:12:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>es soll die fehlende Zahl gefunden werden;</p>
<pre><code>const int size = 10;
	int arr[size] = {0,1,2,3,5,6,7,8,9,10};  // die Zahl 4 fehlt
        int arr1[size+1]={0};
        int fehlende_zahl = 0 ;

        for(int i = 0 ; i &lt; size ; i++)
        {
             arr[i] = 1;
        }

        for(int i = 0 ; i &lt; size+1 ; i++)
        {
            if( arr[i] == 0 ) {fehlende zahl = i ; break;}
        }
</code></pre>
<p>Um die fehlende Zahl zu finden brauch ich ca 2n Rechenschritte. Wenn einer weiß wie es noch schneller geht , kann er es gerne posten.<br />
ABer kann ich mir ehrlich gesagt nicht vorstellen <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/2349732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349732</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 01 Sep 2013 22:12:34 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Sun, 01 Sep 2013 22:19:15 GMT]]></title><description><![CDATA[<p>Dein Programm ist definitiv verkehrt (wenn auch leicht zu fixen). Außerdem ist</p>
<pre><code class="language-cpp">fehlende_zahl = 4;
</code></pre>
<p>viel einfacher (Tipp: Gib die Aufgabenstellung exakt an.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349733</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 01 Sep 2013 22:19:15 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 00:28:34 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>wenn auch leicht zu fixen</p>
</blockquote>
<p>Na, so einfach ist das nun auch nicht. Nur Templates sind ausdrucksstark und vielseitig genug, um dies halbwegs übersichtlich zu lösen. Mein Vorschlag:</p>
<pre><code>template &lt;int I = 0, int i = 0&gt; struct utility
{
  static const int result = I + i;
  static const int greater = 43;
  static const int lesser = -1;
  typedef const int* ptr_t;
  template &lt;typename T&gt; T operator()(T t) { return t + I; }
  bool operator[](int ii) { return I == ii; }
  template &lt;typename T&gt; T operator/(T* t){ return *t; }
};

template &lt;int size, int done = 0&gt; struct find_missing
{
  int result;
  find_missing(typename utility&lt;&gt;::ptr_t current) :
    result ((utility&lt;&gt;() / this)(current)) { }
  operator int() { return result; }
  int operator()(typename utility&lt;&gt;::ptr_t current)
  {
    if (utility&lt;done&gt;()[utility&lt;&gt;() / current])
      return find_missing&lt;size, utility&lt;done, 1&gt;::result&gt;(utility&lt;1&gt;()(current));
    else
      return done;
  }
};

template &lt;&gt; template &lt;int size&gt; struct find_missing&lt;size, size&gt;: 
  public find_missing&lt;utility&lt;&gt;::greater, utility&lt;&gt;::lesser&gt;
{
  find_missing(typename utility&lt;&gt;::ptr_t current): 
    find_missing&lt;utility&lt;&gt;::greater, utility&lt;&gt;::lesser&gt;(current) { }
  int operator()(typename utility&lt;&gt;::ptr_t)
  {
    return size;
  }
};

#include &lt;iostream&gt;
int main()
{
  const int size = 10;
  int arr[size] = {0,1,2,3,5,6,7,8,9,10};  // die Zahl 4 fehlt
  std::cout &lt;&lt; find_missing&lt;size&gt;(arr) &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2349740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349740</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 02 Sep 2013 00:28:34 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 01:19:30 GMT]]></title><description><![CDATA[<blockquote>
<p>ABer kann ich mir ehrlich gesagt nicht vorstellen</p>
</blockquote>
<p>Ich addiere alle Zahlen und vergleich mit dem kleinen Gauss (n*(n+1)/2 oder so). Zeit O(n), Platz O(1). Insgesamt wird's wesentlich schneller sein, aber miss selbst nach!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349742</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 02 Sep 2013 01:19:30 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 05:27:51 GMT]]></title><description><![CDATA[<p>solange nur eine Zahl fehlt, gehts logarithmisch. ansonsten k*log(n) wobei k die Anzahl fehlender Zahlen und n die größe des arrays ist.</p>
<p>//edit als kleiner Denkanstoß:</p>
<p>In einem Teilarray a1,a2,a3,....,an fehlt kein Element, wenn an-a1=n ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349745</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Mon, 02 Sep 2013 05:27:51 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 06:17:17 GMT]]></title><description><![CDATA[<p>Wie wäre es mit std::set_difference?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349757</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 02 Sep 2013 06:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 06:28:35 GMT]]></title><description><![CDATA[<p>blurry333 schrieb:</p>
<blockquote>
<p>ABer kann ich mir ehrlich gesagt nicht vorstellen <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>
</blockquote>
<p>Ich kann mir nicht vorstellen, dass dein Code überhaupt funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349761</guid><dc:creator><![CDATA[amüsiert]]></dc:creator><pubDate>Mon, 02 Sep 2013 06:28:35 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 07:07:04 GMT]]></title><description><![CDATA[<blockquote>
<p>solange nur eine Zahl fehlt, gehts logarithmisch.</p>
</blockquote>
<p>Blurry hat leider nichts spezifiziert. Prinzipiell kann nicht davon ausgegangen werden, dass die Zahlen sortiert sind. (Prinzipiell kann nicht davon ausgegangen werden, dass jede Zahl nur einfach enthalten ist).</p>
<p>Ansonsten: <a href="http://stackoverflow.com/questions/3492302/easy-interview-question-got-harder-given-numbers-1-100-find-the-missing-number" rel="nofollow">http://stackoverflow.com/questions/3492302/easy-interview-question-got-harder-given-numbers-1-100-find-the-missing-number</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349768</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 02 Sep 2013 07:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 07:05:08 GMT]]></title><description><![CDATA[<p>Wieso nicht die offensichtlichste Lösung?</p>
<pre><code>const int size = 10;
int arr[size] = {0,1,2,3,5,6,7,8,9,10};  // die Zahl 4 fehlt
int fehlende_zahl = 0;

if (arr[0] == 0)
{
    for (int i = 1; i &lt; size; ++i)
        if (arr[i - 1] + 1 != arr[i])
        {
            fehlende_zahl = i;
            break;
        }
}
</code></pre>
<p>Und schon hat man schlimmstenfalls O(n), meistens sogar besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349769</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 02 Sep 2013 07:05:08 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 07:44:52 GMT]]></title><description><![CDATA[<p>ja mein Programm war etwas falsch. Aber ihr wußtet ja alle wie es gemeint war <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>
<pre><code>const int size = 10;
        int arr[size] = {0,1,2,3,5,6,7,8,9,10};  // die Zahl 4 fehlt
        int arr1[size+1]={0};
        int fehlende_zahl = 0 ;

        for(int i = 0 ; i &lt; size ; i++)
        {
             arr1[arr[i&rsqb;&rsqb; = 1;
        }

        for(int i = 0 ; i &lt; size+1 ; i++)
        {
            if( arr1[i] == 0 ) {fehlende_zahl = i ; break;}
        }

		cout&lt;&lt;fehlende_zahl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2349777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349777</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Mon, 02 Sep 2013 07:44:52 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 08:39:45 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Und schon hat man schlimmstenfalls O(n), meistens sogar besser.</p>
</blockquote>
<p>Besser? Also O(log n) oder gar O(k)? Wie soll das bei einer linearen Suche (die du in deinem Code verwendest) gehen?</p>
<p>im Schnitt brauchst du n/2 Schritte -&gt; O(n)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349789</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 02 Sep 2013 08:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 08:55:38 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Und schon hat man schlimmstenfalls O(n), meistens sogar besser.</p>
</blockquote>
<p>Besser? Also O(log n) oder gar O(k)? Wie soll das bei einer linearen Suche (die du in deinem Code verwendest) gehen?</p>
<p>im Schnitt brauchst du n/2 Schritte -&gt; O(n)</p>
</blockquote>
<p>Oh, stimmt, hab ich übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349793</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 02 Sep 2013 08:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to Finde fehlende Zahl on Mon, 02 Sep 2013 08:59:19 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<blockquote>
<p>ABer kann ich mir ehrlich gesagt nicht vorstellen</p>
</blockquote>
<p>Ich addiere alle Zahlen und vergleich mit dem kleinen Gauss (n*(n+1)/2 oder so). Zeit O(n), Platz O(1). Insgesamt wird's wesentlich schneller sein, aber miss selbst nach!</p>
</blockquote>
<p>Man kann auch xor verknüpfen und aus dem Ergebnis auf die fehlende Zahl schliessen - das war mal Genegstand einer Aufgabe von volkard in einem Wettbewerb. Da wurden die Zahlen auch 64bit groß und xor hat den Vorteil, dass (bei einem 32bit Rechner) die beiden Hälften der Zahlen unabhängig voneinander verarbeitet werden können, was bei Addition nicht der Fall ist. Dummerweise hat er auf einem C3 getestet (in-order, nur sehr beschränkt superskalar), so das das leider nicht zum Tragen kam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349796</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 02 Sep 2013 08:59:19 GMT</pubDate></item></channel></rss>