<?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[mehrdeutiger Aufruf einer überladener Funktion]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich habe mich bis jetzt lediglich alleine mit c++ rumgeschlagen, komme jetzt aber nicht wirklich weiter. Ich habe ein längeres Programm geschrieben welches mir noch 4 Fehler ausgibt, die alle sehr ähnlich sind. Wenn ich einen davon beheben kann, dann auch den Rest. Erstmal ein wenig Quellcode:</p>
<p>Der Anfang:</p>
<pre><code class="language-cli">#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
using namespace std;
#include &lt;math.h&gt;
</code></pre>
<p>Und die Stelle des Problems:</p>
<pre><code class="language-cli">const double cMin = 2 * floor(sqrt(r)) * log(n);
</code></pre>
<p>Als Fehler bekomme ich hier:<br />
Error C2668:'log' mehrdeutiger Aufruf einer überladener Funktion<br />
kann 'long double log(long double)' sein<br />
oder &quot;float log(float)&quot;</p>
<p>Ich habe schon ein wenig probiert den Fehler zu beheben, durch eine Änderung habe ich es geschafft den Fehler zu ändern, sodass ich als Fehlerausgabe bekommen habe &quot;unerwarteter Typ double&quot;.<br />
Ich hoffe ihr habt einen Tipp für mich.</p>
<p>Schonmal Danke im Voraus.<br />
oder &quot;double log(double)&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/308324/mehrdeutiger-aufruf-einer-überladener-funktion</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 18:05:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308324.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Sep 2012 10:44:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 10:44:49 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich habe mich bis jetzt lediglich alleine mit c++ rumgeschlagen, komme jetzt aber nicht wirklich weiter. Ich habe ein längeres Programm geschrieben welches mir noch 4 Fehler ausgibt, die alle sehr ähnlich sind. Wenn ich einen davon beheben kann, dann auch den Rest. Erstmal ein wenig Quellcode:</p>
<p>Der Anfang:</p>
<pre><code class="language-cli">#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
using namespace std;
#include &lt;math.h&gt;
</code></pre>
<p>Und die Stelle des Problems:</p>
<pre><code class="language-cli">const double cMin = 2 * floor(sqrt(r)) * log(n);
</code></pre>
<p>Als Fehler bekomme ich hier:<br />
Error C2668:'log' mehrdeutiger Aufruf einer überladener Funktion<br />
kann 'long double log(long double)' sein<br />
oder &quot;float log(float)&quot;</p>
<p>Ich habe schon ein wenig probiert den Fehler zu beheben, durch eine Änderung habe ich es geschafft den Fehler zu ändern, sodass ich als Fehlerausgabe bekommen habe &quot;unerwarteter Typ double&quot;.<br />
Ich hoffe ihr habt einen Tipp für mich.</p>
<p>Schonmal Danke im Voraus.<br />
oder &quot;double log(double)&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253216</guid><dc:creator><![CDATA[ray91]]></dc:creator><pubDate>Fri, 21 Sep 2012 10:44:49 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 11:00:40 GMT]]></title><description><![CDATA[<p>Welche Funktion soll denn genommen werden, wenn du log mit einem int aufrufst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253223</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 21 Sep 2012 11:00:40 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 11:07:58 GMT]]></title><description><![CDATA[<p>Meinst du welchen Logarithmus ich verwenden möchte? Oder wie soll ich das verstehen.</p>
<p>Das gleiche Problem habe ich an einer anderen Stelle mit der CodeZeile</p>
<pre><code class="language-cli">const unsigned int iMax = sqrt(n) + 1;
</code></pre>
<p>Gibt haargenau den gleichen Fehler nur mit sqrt anstatt mit log.</p>
<p>Aber mit sqrt kann er doch nichts falsch verstehen.</p>
<p>Anscheinend hängt es ja mit dem Typ zusammen, ob double,float etc...</p>
<p>Aber ich denke ich habe deine Frage nicht gut genug verstanden.<br />
Solange bin ich noch nicht bei c++ dabei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253227</guid><dc:creator><![CDATA[ray91]]></dc:creator><pubDate>Fri, 21 Sep 2012 11:07:58 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 11:22:10 GMT]]></title><description><![CDATA[<p>Mit der Frage war gemeint: Es gibt drei Funktionen namens <code>log</code> . Eine nimmt einen float entgegen und gibt float zurück, eine macht das gleiche für double und eine für long double. Ein int ist weder ein float noch ein double noch ein long double. Aber ein int kann implizit in jeden dieser drei Typen umgewandelt werden. Wenn du der log-Funktion nun einen int gibst, dann ist unklar, welche der srei Funktionen gemeint ist und du musst daher eine explizite Umwandlung (static_cast) vornehmen, um die Mehrdeutigkeit aufzulösen.</p>
<p>In C++11 gibt es übrigens noch eine Überladung für integrale Datentypen, da wäre der Fall für int eindeutig. Guck doch mal, ob dein Compiler C++11 kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253233</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 21 Sep 2012 11:22:10 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 12:27:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;complex&gt;

...

std::sqrt&lt;float&gt;(r);
std::log&lt;float&gt;(r);

...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2253263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253263</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 21 Sep 2012 12:27:47 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 12:35:32 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;complex&gt;

...

std::sqrt&lt;float&gt;(r);
std::log&lt;float&gt;(r);

...
</code></pre>
</blockquote>
<p>Ich hoffe, das soll Klugscheißerei sein, dass es mehr als die drei von mir genannten Überladungen gibt, nicht als ernsthafte Alternative. Bei dir weiß man ja nie. Da du keinen Kommentar dazu abgibst, lege ich es mal zu deinem Vorteil als Klugscheißerei aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253267</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 21 Sep 2012 12:35:32 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 14:30:26 GMT]]></title><description><![CDATA[<p>So, schonmal danke für die Hilfe, jetzt weiß ich wenigstens warum das Programm nicht funktioniert. Ich glaube aber, dass ich es noch nicht richtig verstehe mit static_cast umzugehen. Ich poste mal die kleine Teilfunktion des Programs hier vollständig:</p>
<pre><code class="language-cli">static bool IsPrime(unsigned int n)
{
	//unsigned long m;
	if (n &lt; 2) return false;
	if (n &lt; 4) return true;
	if (n % 2 == 0) return false;
	//m=static_cast&lt;unsigned long&gt;(n);

	const unsigned int iMax = sqrt(n/*m*/) + 1;
	unsigned int i;
	for (i = 3; i &lt;= iMax; i += 2)
		if (n/*m*/ % i == 0)
			return false;

	return true;
}
</code></pre>
<p>Die Kommentar wären meine Änderung gewesen, leider ohne Erfolg <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title="=/"
      alt="😕"
    /><br />
Long ist natürlich noch viel zu klein, aber darum geht es ja erstmal nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253304</guid><dc:creator><![CDATA[ray91]]></dc:creator><pubDate>Fri, 21 Sep 2012 14:30:26 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 14:36:41 GMT]]></title><description><![CDATA[<p>&quot;Ohne Erfolg&quot; ist keine gute Fehlerbeschreibung. Davon abgesehen castest du nach long double. Wieso denn? SeppJ hat doch schon gesagt was für Typen gehen:</p>
<blockquote>
<p>Eine nimmt einen float entgegen und gibt float zurück, eine macht das gleiche für double und eine für long double. Ein int ist weder ein float noch ein double noch ein long double.</p>
</blockquote>
<p>Auch ein unsigned long ist keines der 3 Typen.</p>
<p>So sollte es (z.B.) funktionieren:</p>
<pre><code class="language-cpp">static bool IsPrime(unsigned int n)
{
    if (n &lt; 2) return false;
    if (n &lt; 4) return true;
    if (n % 2 == 0) return false;

    const unsigned int iMax = sqrt(static_cast&lt;double&gt;(n)) + 1;
    unsigned int i;
    for (i = 3; i &lt;= iMax; i += 2)
        if (n % i == 0)
            return false;

    return true;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2253309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253309</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Fri, 21 Sep 2012 14:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 14:37:33 GMT]]></title><description><![CDATA[<p>Kleiner Fehler: Das erste oben soll natürlich</p>
<blockquote>
<p>Davon abgesehen castest du nach unsigned long.</p>
</blockquote>
<p>heißen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253310</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Fri, 21 Sep 2012 14:37:33 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 14:41:39 GMT]]></title><description><![CDATA[<p>So, wie du es geschrieben hast sagt er:</p>
<p>'Initialisierung': Konvertierung von 'double' in 'const unsigned int', möglicher Datenverlust</p>
<p>Ansonsten kein Fehler mehr. Ich möchte ja große Primzahlen einsetzen(ca 1000 Binärstellen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253311</guid><dc:creator><![CDATA[ray91]]></dc:creator><pubDate>Fri, 21 Sep 2012 14:41:39 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 15:39:37 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;complex&gt;

...

std::sqrt&lt;float&gt;(r);
std::log&lt;float&gt;(r);

...
</code></pre>
</blockquote>
<p>Ich hoffe, das soll Klugscheißerei sein, dass es mehr als die drei von mir genannten Überladungen gibt, nicht als ernsthafte Alternative. Bei dir weiß man ja nie. Da du keinen Kommentar dazu abgibst, lege ich es mal zu deinem Vorteil als Klugscheißerei aus.</p>
</blockquote>
<p>Es sollte in der Tat Klugscheißerei sein. Aber erklär mir noch schnell, wieso das keine Alternative ist, weil hier implizit in ein <code>complex&lt;&gt;</code> und zurück gecastet wird? Oder weil der Algorithmus langsamer/anders ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253331</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 21 Sep 2012 15:39:37 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 16:56:48 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>weil hier implizit in ein <code>complex&lt;&gt;</code> und zurück gecastet wird?</p>
</blockquote>
<p>Cast ist lustig. Das ist ein fetter Kontruktor und Konvertierungsoperator.</p>
<blockquote>
<p>Oder weil der Algorithmus langsamer/anders ist?</p>
</blockquote>
<p>Aber Hallo. Gib mal an, wie du den Logarithmus einer komplexen Zahl berechnest und den einer reellen Zahl und staune, wie unterschiedlich der Aufwand ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253346</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 21 Sep 2012 16:56:48 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 17:34:37 GMT]]></title><description><![CDATA[<p>ray91 schrieb:</p>
<blockquote>
<p>So, wie du es geschrieben hast sagt er:</p>
<p>'Initialisierung': Konvertierung von 'double' in 'const unsigned int', möglicher Datenverlust</p>
<p>Ansonsten kein Fehler mehr. Ich möchte ja große Primzahlen einsetzen(ca 1000 Binärstellen)</p>
</blockquote>
<p>Das liegt daran das</p>
<pre><code class="language-cpp">sqrt(static_cast&lt;double&gt;(n)) + 1;
</code></pre>
<p>als double variante einen double zurückgibt. Diesen weißt du dann einem int zu (iMax). Eventuell vorhandene Nachkommastellen werden also einfach abgeschnitten. Das ist dann der Datenverlust. Wenn du 1000 Binärstellen haben willst, reichen aber allgemein solche Datentypen eh nicht, da müsstest du dich wohl schon nach einer extra Bibliothek umschaun, die dann wahrscheinlich auch eine völlig andere sqrt-Funktion anbieten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253356</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Fri, 21 Sep 2012 17:34:37 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Fri, 21 Sep 2012 17:47:25 GMT]]></title><description><![CDATA[<p>KMT schrieb:</p>
<blockquote>
<p>Das liegt daran das</p>
<pre><code class="language-cpp">sqrt(static_cast&lt;double&gt;(n)) + 1;
</code></pre>
<p>als double variante einen double zurückgibt. Diesen weißt du dann einem int zu (iMax). Eventuell vorhandene Nachkommastellen werden also einfach abgeschnitten. Das ist dann der Datenverlust.</p>
</blockquote>
<p>Das ist eigentlich das erwartete Verhalten. Der wirkliche Datenverlust entsteht bei Werten die größer als INT_MAX sind (bzw. kleiner als INT_MIN).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253365</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 21 Sep 2012 17:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 16:20:35 GMT]]></title><description><![CDATA[<p>Hallo, ich habe noch eine kleine Frage. Anscheinend bin ich doof, denn ich finde den Fehler nicht.<br />
Folgender Quelltext:</p>
<pre><code class="language-cli">const unsigned int iMax = sqrt(n) + 1;
    unsigned int i;
	bool m=true;
    for (i = 3; i &lt;= iMax; i += 2)
	{
		 if (n % i == 0)
		{
			m=false;
		}
	}
	if (m==true)
	{
		cout &lt;&lt; &quot;Primzahl&quot;;
	}
	else
	{
		cout &lt;&lt; &quot;Keine Primzahl&quot;;
	}
</code></pre>
<p>Für Zahlen wie 9 und 15 klappts.<br />
Aber ab 25 sagt er mir, es sei eine Primzahl. Woran liegt das? Das gleiche gilt für 49,121 etc. Irgendwas muss an meiner for-Schleife falsch sein.<br />
Ich denke es ist kein großes Problem, leider finde ich es nicht.</p>
<p>Danke für die Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2254331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254331</guid><dc:creator><![CDATA[ray91]]></dc:creator><pubDate>Tue, 25 Sep 2012 16:20:35 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 16:30:41 GMT]]></title><description><![CDATA[<p>Bitte C++-Tags nutzen.<br />
Ja, deine Schleife ist Blödsinn.<br />
Nimm lieber</p>
<pre><code class="language-cpp">for (unsigned int i = 2; i &lt; n / 2;++i)
        if (n % i == 0)
        {
                std::cout &lt;&lt; &quot;Keine &quot;;
                break;
        }

std::cout &lt;&lt; &quot;Primzahl!&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2254337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254337</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 25 Sep 2012 16:30:41 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 16:44:48 GMT]]></title><description><![CDATA[<p>Ich würde das gerne mit dem iMax machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title="=/"
      alt="😕"
    /> Das erspart viel Rechenarbeit bei großen Primzahlen.</p>
<pre><code class="language-cpp">const unsigned int iMax = sqrt(n) + 1;
for (unsigned int i = 3; i &lt;= iMax / i+=2)
        if (n % i == 0)
        {
                cout &lt;&lt; &quot;Keine Primzahl &quot;;
                break;
        }
</code></pre>
<p>cout &lt;&lt; &quot;Primzahl&quot;;<br />
Hier sagt er mir trotzdem für Zahlen wie 121, dass es eine Primzahl sei..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2254343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254343</guid><dc:creator><![CDATA[ray91]]></dc:creator><pubDate>Tue, 25 Sep 2012 16:44:48 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 16:59:14 GMT]]></title><description><![CDATA[<p>Zeig bitte deinen richtigen Code. Dein Codebeispiel kann unmöglich compilieren. Bitte nur Copy &amp; Paste benutzen. Siehe dazu den dritten Link in meiner Signatur. Sonst verschwendest du nur unsere und deine Zeit mit Fehlern, die gar keine sind, sondern beim Abschreiben entstanden sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2254349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254349</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 25 Sep 2012 16:59:14 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 17:02:55 GMT]]></title><description><![CDATA[<p>ray91 schrieb:</p>
<blockquote>
<p>Ich würde das gerne mit dem iMax machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title="=/"
      alt="😕"
    /> Das erspart viel Rechenarbeit bei großen Primzahlen.</p>
</blockquote>
<p>Nein, tut es nicht. Compiler optimieren, weißt du. (Ich hoffe, <code>n</code> ist bei dir <code>const</code> )<br />
Und meine Version sagt für 121, <em>Keine Primzahl!</em> <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/2254351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254351</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 25 Sep 2012 17:02:55 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 17:10:32 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>ray91 schrieb:</p>
<blockquote>
<p>Ich würde das gerne mit dem iMax machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title="=/"
      alt="😕"
    /> Das erspart viel Rechenarbeit bei großen Primzahlen.</p>
</blockquote>
<p>Nein, tut es nicht. Compiler optimieren, weißt du. (Ich hoffe, <code>n</code> ist bei dir <code>const</code> )</p>
</blockquote>
<p>Wieder Unsinn. Kein Compiler der Welt optimiert dir eine Schleife bis n/2 zu sqrt(n), weil er erkennt, dass die Bedingung nie wieder wahr wird. Mit diesem Argument könnte der Compiler anstatt die Schleife zu erzeugen auch erkennen, dass hier Primzahlen gesucht werden und stattdessen einen effizienten Algorithmus generieren. Hör gefälligst auf, zu jedem Thread Müll zu labern! Ich war die letzten 15 Minuten beschäftigt nur deinen Schrott zu korrigieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2254353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254353</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 25 Sep 2012 17:10:32 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 17:20:34 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>ray91 schrieb:</p>
<blockquote>
<p>Ich würde das gerne mit dem iMax machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title="=/"
      alt="😕"
    /> Das erspart viel Rechenarbeit bei großen Primzahlen.</p>
</blockquote>
<p>Nein, tut es nicht. Compiler optimieren, weißt du. (Ich hoffe, <code>n</code> ist bei dir <code>const</code> )</p>
</blockquote>
<p>Wieder Unsinn. Kein Compiler der Welt optimiert dir eine Schleife bis n/2 zu sqrt(n), weil er erkennt, dass die Bedingung nie wieder wahr wird.</p>
</blockquote>
<p>Bist du doof oder so?<br />
Ich meinte, dass man nicht den Endindex in eine Variable auslagern muss!! Lies doch! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2254362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254362</guid><dc:creator><![CDATA[s_logoff]]></dc:creator><pubDate>Tue, 25 Sep 2012 17:20:34 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 17:42:13 GMT]]></title><description><![CDATA[<p>Also ich hoffe mal es ist okay, dass ich jetzt den ganzen Code poste:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;

using namespace std;

int main(int n)
{
	cout &lt;&lt; &quot;Geben Sie eine Zahl ein:\n&quot;;
	cin &gt;&gt; n;
	if (n&lt;2)
	{
		cout &lt;&lt; &quot;Keine Primzahl\n&quot;;
		system(&quot;pause&quot;);
		return 0;
	}
	if (n==3)
	{
		cout &lt;&lt; &quot;Primzahl\n&quot;;
		system(&quot;pause&quot;);
		return 0;
	}
	if (n % 2 == 0) 
	{
		cout &lt;&lt; &quot;Keine Primzahl\n&quot;;
		system(&quot;pause&quot;);
		return 0;
	}

    const unsigned int iMax = sqrt(n) + 1;
for (unsigned int i = 3; i &lt;= iMax, i+=2)
        if (n % i == 0)
        {
                cout &lt;&lt; &quot;Keine &quot;;
                break;
        }

cout &lt;&lt; &quot;Primzahl!&quot;;
system(&quot;pause&quot;);
return 0;

}
</code></pre>
<p>Da kommt eine Fehlermeldung, diese verschwindet aber sofort, sodass ich sie gar nicht erkennen kann. Wie gesagt, ich bin der Meinung, dass sich irgendwo ein kleiner blöder Programmierfehler eingeschlichen hat. Bin noch nicht lange dabei.</p>
<p>Schonmal vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2254368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254368</guid><dc:creator><![CDATA[ray91]]></dc:creator><pubDate>Tue, 25 Sep 2012 17:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 18:09:11 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main(int n)
</code></pre>
<p>Das geht nicht. Wenn du wissen willst, was main für Parameter haben kann, googel das mal.</p>
<p>Ansonsten wird er dir noch sagen, dass sqrt nicht deklariert ist, das ist es nämlich in der Headerdatei cmath.</p>
<p>Außerdem hast du das ganz schön umständlich gelöst.</p>
<p>Deine Schleife kannst du auch gleich ganz leicht in eine hübsche Funktion packen.<br />
Könnte so aussehn.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cmath&gt;
using namespace std;

bool ist_primzahl(int zahl)
{
    if(zahl &lt; 2)
        return false;
    if(zahl == 2)
        return true;
    for(int i = 2; i &lt;= (zahl / 2); ++i)
        if(zahl % i == 0)
            return false;
    return true;
}

int main()
{
    int n;
    cout &lt;&lt; &quot;Geben Sie eine Zahl ein:\n&quot;;
    cin &gt;&gt; n;
    if(ist_primzahl(n))
        std::cout &lt;&lt; &quot;Primzahl!\n&quot;;
    else
        std::cout &lt;&lt; &quot;Keine Primzahl!\n&quot;;
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2254378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254378</guid><dc:creator><![CDATA[Incocnito]]></dc:creator><pubDate>Tue, 25 Sep 2012 18:09:11 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 18:16:44 GMT]]></title><description><![CDATA[<p>Wenn ich das Programm so kopiere sagt es mir 121 ist prim</p>
<p>Irgendwas stimmt doch hier mit meinem Programm nicht.<br />
Und anstatt bis n/2 reicht es ja bis sqrt(n)+1 zu gehen.</p>
<p>Wieso klappt das bei mir nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2254381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254381</guid><dc:creator><![CDATA[ray_91]]></dc:creator><pubDate>Tue, 25 Sep 2012 18:16:44 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Tue, 25 Sep 2012 18:38:37 GMT]]></title><description><![CDATA[<p>Du musst schon den Quellcode zeigen, der nicht funktioniert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2254393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254393</guid><dc:creator><![CDATA[ghjghj]]></dc:creator><pubDate>Tue, 25 Sep 2012 18:38:37 GMT</pubDate></item><item><title><![CDATA[Reply to mehrdeutiger Aufruf einer überladener Funktion on Wed, 26 Sep 2012 18:11:13 GMT]]></title><description><![CDATA[<p>So siehts jetzt aus:<br />
Ich habe den Verdacht, dass lediglich auf modulo 2 und 3 getestet wird. Zahlen wie 25,121 sind prim, Zahlen die gerade oder durch 3 teilbar sind werden als nicht prim ausgegeben.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cmath&gt;
using namespace std;

bool ist_primzahl(int zahl)
{
    if(zahl &lt; 2)
	{
		return false
	}
	if (zahl==3)
	{
		return true
	}
	if(zahl % 2 ==0)
	{
		return false
	}
	for(unsigned int i=3,i&lt;=(sqrt(zahl)+1),i+=2)
	{
		if(zahl % i ==0)
		{
			return false
		}
	}
	return true;
}

int main()
{
    int n;
    cout &lt;&lt; &quot;Geben Sie eine Zahl ein:\n&quot;;
    cin &gt;&gt; n;
    if(ist_primzahl(n))
        cout &lt;&lt; &quot;Primzahl!\n&quot;;
    else
        cout &lt;&lt; &quot;Keine Primzahl!\n&quot;;
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2254744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2254744</guid><dc:creator><![CDATA[ray91]]></dc:creator><pubDate>Wed, 26 Sep 2012 18:11:13 GMT</pubDate></item></channel></rss>