<?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[ggt Funktioniert nicht]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

void Kuerzen(int *zaehler, int *nenner)
{
    int teiler;
    teiler = ggt(*zaehler, *nenner);
    *zaehler = *zaehler/teiler;
    *nenner = *nenner/teiler;
}

int main()
{
    int z=14;
    int n=6;
    Kuerzen(&amp;z, &amp;n);

    cout &lt;&lt; z &lt;&lt; &quot; &quot; &lt;&lt; n &lt;&lt; endl;

    system (&quot;PAUSE&quot;);

    return 0;
}
</code></pre>
<p>Hmm hab den Quellcode genaus so abgeschrieben wie er im Buch steht. Allerdings bekomme ich den Fehler, das mein Compiler ggt nicht kennt. (First use in this Function). Hmm funktioniert das nicht weil ich mit dem dev-cpp arbeite oder woran könnte das liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/118082/ggt-funktioniert-nicht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 08:21:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/118082.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Aug 2005 03:42:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ggt Funktioniert nicht on Mon, 15 Aug 2005 03:42:36 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

void Kuerzen(int *zaehler, int *nenner)
{
    int teiler;
    teiler = ggt(*zaehler, *nenner);
    *zaehler = *zaehler/teiler;
    *nenner = *nenner/teiler;
}

int main()
{
    int z=14;
    int n=6;
    Kuerzen(&amp;z, &amp;n);

    cout &lt;&lt; z &lt;&lt; &quot; &quot; &lt;&lt; n &lt;&lt; endl;

    system (&quot;PAUSE&quot;);

    return 0;
}
</code></pre>
<p>Hmm hab den Quellcode genaus so abgeschrieben wie er im Buch steht. Allerdings bekomme ich den Fehler, das mein Compiler ggt nicht kennt. (First use in this Function). Hmm funktioniert das nicht weil ich mit dem dev-cpp arbeite oder woran könnte das liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/852296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852296</guid><dc:creator><![CDATA[Starter17]]></dc:creator><pubDate>Mon, 15 Aug 2005 03:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to ggt Funktioniert nicht on Mon, 15 Aug 2005 04:03:57 GMT]]></title><description><![CDATA[<p>Es gibt keine Standard ggt-Funktion die musst du auch noch schreiben!<br />
Etwa so:</p>
<pre><code class="language-cpp">int ggt(int a, int b)
{
    return b == 0 ? a : gcd(b,a % b);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/852297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852297</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Mon, 15 Aug 2005 04:03:57 GMT</pubDate></item><item><title><![CDATA[Reply to ggt Funktioniert nicht on Mon, 15 Aug 2005 08:42:11 GMT]]></title><description><![CDATA[<p>So hab mir jetzt einfach selbst eine Funktion dazu geschreiben. Sie sieht zwar nicht schön aus aber sie erfüllt ihren Zweck und das ist meiner erste selbsterdachte Formale <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>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

// Teiler
int Teiler(int x, int y)
{
    unsigned int z;
    int k = 1;

    for (z=2;k==1;z++)
    {
        if(x%z==0 &amp;&amp; y%z==0)
        {
                k=0;
        }
    }
    z--;

    return z;
}

// Kuerzen
void Kuerzen(int *zaehler, int *nenner)
{
    int teiler;
    int x = *zaehler;
    int y = *nenner;
    teiler = Teiler(x, y);
    *zaehler = *zaehler/teiler;
    *nenner = *nenner/teiler;
}

// Main
int main()
{
    int z=9;
    int n=3;
    Kuerzen(&amp;z, &amp;n);

    cout &lt;&lt; z &lt;&lt; &quot; &quot; &lt;&lt; n &lt;&lt; endl;

    system (&quot;PAUSE&quot;);

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/852365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/852365</guid><dc:creator><![CDATA[Starter17]]></dc:creator><pubDate>Mon, 15 Aug 2005 08:42:11 GMT</pubDate></item><item><title><![CDATA[Reply to ggt Funktioniert nicht on Tue, 16 Aug 2005 09:34:59 GMT]]></title><description><![CDATA[<p>FireFlow schrieb:</p>
<blockquote>
<p>Es gibt keine Standard ggt-Funktion die musst du auch noch schreiben!<br />
Etwa so:</p>
<pre><code class="language-cpp">int ggt(int a, int b)
{
    return b == 0 ? a : gcd(b,a % b);
}
</code></pre>
</blockquote>
<p>Eher so:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
inline T gcd (T a, T b)
{
    return (b == 0) ? a : gcd (b, a % b);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/853150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853150</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 16 Aug 2005 09:34:59 GMT</pubDate></item><item><title><![CDATA[Reply to ggt Funktioniert nicht on Tue, 16 Aug 2005 16:00:32 GMT]]></title><description><![CDATA[<p>ich würd's ohne Rekursion machen (Stack-Overflow vermeiden) und im νorraus nur für positive Ganzzahlen festlegen:</p>
<pre><code class="language-cpp">unsigned long gcd(unsigned long a, unsigned long b)
{
	unsigned long r;
	while ((r = a % b) != 0)
	{
		a = b;
		b = r;
	}
	return b;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/853551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853551</guid><dc:creator><![CDATA[divisor]]></dc:creator><pubDate>Tue, 16 Aug 2005 16:00:32 GMT</pubDate></item><item><title><![CDATA[Reply to ggt Funktioniert nicht on Tue, 16 Aug 2005 17:04:15 GMT]]></title><description><![CDATA[<p>ist ein simpler fall von tail-rekursion. die erkennt praktisch jeder compiler. ein stackoverflow ist somit nicht das problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853586</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 16 Aug 2005 17:04:15 GMT</pubDate></item><item><title><![CDATA[Reply to ggt Funktioniert nicht on Tue, 16 Aug 2005 18:06:46 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>ist ein simpler fall von tail-rekursion. die erkennt praktisch jeder compiler. ein stackoverflow ist somit nicht das problem.</p>
</blockquote>
<p>Das stimmt leider nur bedingt. Folgendes Test-Programm funktioniert mit VC++ 7.1 und VC++ 8.0 beta 2 nur falls man den <strong>Release</strong>-Modus eingeschaltet hat und mit g++ 3.4.4 erst ab <strong>-O2</strong></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

int test(int a)
{
	return a&gt;1000000? a : test(a+1);
}

int main()
{
	cout &lt;&lt; test(0) &lt;&lt; endl;
	cin.get();    
}
</code></pre>
<p>Wenn man also ein Programm, das eine solche Funktion verwendet, debuggen will, Pustekuchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853616</guid><dc:creator><![CDATA[nillable]]></dc:creator><pubDate>Tue, 16 Aug 2005 18:06:46 GMT</pubDate></item><item><title><![CDATA[Reply to ggt Funktioniert nicht on Tue, 16 Aug 2005 19:36:03 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>ist ein simpler fall von tail-rekursion. die erkennt praktisch jeder compiler. ein stackoverflow ist somit nicht das problem.</p>
</blockquote>
<p>ergebnis richtig, begründung nicht ganz.</p>
<p>ich behaupte, daß keine tail recursion optimiert wird, wenn die optimierungen zu debug-zwecken gar nicht an sind. nicht nur zu debugzwecken, manchemal haben leute auch mit -O3 schlechte erfahrungen und machen immer zuerstmal ohnbe optimierungen und nur wenn das geht, probieren sie mal zaghaft -O1 oder -O2. also wollen wir doch so nett sein, c++-code, der aich auf solche optimierung verläßt, als falsch zu erklären.</p>
<p>und nur zu einer alternativen begründung:<br />
aus A,B wird in einem durchlauf B,A%B und in einem weiteren durchlauf A%B,...<br />
nun ist der wert von A%B höchstens halb so groß wie A. also halbiert sich die größe von A mindestens jeden zweiten durchlauf und die maximale anzahl der durchläufe ist sowas wie log2(a)*2, was bei nem 64-bit-typ gerademal 128 durchläufe macht. bzw verschachtelungen, und 128 verschachtelungen sind als unproblematisch anzusehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853673</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 16 Aug 2005 19:36:03 GMT</pubDate></item><item><title><![CDATA[Reply to ggt Funktioniert nicht on Wed, 17 Aug 2005 08:31:35 GMT]]></title><description><![CDATA[<p>Die rekursive Version des Euklid-ggt braucht zwar relativ wenige Verschachtelungen, aber wenn sie an einer Stelle aufgerufen wird, die bereits eine hohe Verschachtelungstiefe aufweist, kann sogar das zuviel sein. Rekursion, die der Compiler gegebenenfalls <strong>wegoptimieren</strong> kann, ist in der Regel leicht im νorraus als Iteration codierbar und man kann sich darauf verlassen, auch ohne automatische Optimierung, Laufzeitstack und Zeit kostende Funktionsaufrufe zu sparen. Schwieriger wird es bei Fällen wie z. Bsp. dem Durchlaufen beliebig verschachtelter Strukturen. Dort kann man die Rekursion wegoptimieren, indem man einen Stack auf dem Heap anlegt und die nötigen Daten im Laufe der Iterationen darüber verwaltet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853916</guid><dc:creator><![CDATA[divisor]]></dc:creator><pubDate>Wed, 17 Aug 2005 08:31:35 GMT</pubDate></item></channel></rss>