<?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[wurzelzieher problem]]></title><description><![CDATA[<p>Hi leute ich bin gerade dabei einen wurzelzieher zu schreiben,<br />
doch wenn die variable teilen unter 0.5 ist dann wird die if abfrage garnicht aufgerufen hier der code:<br />
#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main(){<br />
double teilen = 0.1,test = 0,ergebniss = 0;</p>
<p>double eingabe;<br />
cin&gt;&gt;eingabe;</p>
<p>getchar();<br />
while (test == 0,eingabe &gt; teilen * 2){<br />
ergebniss = eingabe/teilen;<br />
cout&lt;&lt;&quot;teilen:&quot;&lt;&lt;teilen&lt;&lt;endl; //nur zur hilfe</p>
<p>cout&lt;&lt;&quot;ergebniss: &quot;&lt;&lt;ergebniss&lt;&lt;endl;//nur zur Hilfe</p>
<p>if(teilen == ergebniss)<br />
{<br />
cout&lt;&lt;&quot;Das ergebniss lautet: &quot;&lt;&lt;teilen;<br />
test = 1;<br />
getchar();<br />
}<br />
teilen = teilen + 0.1;</p>
<p>}<br />
getchar();<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/316640/wurzelzieher-problem</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 22:29:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316640.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 May 2013 10:39:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wurzelzieher problem on Sat, 11 May 2013 10:39:20 GMT]]></title><description><![CDATA[<p>Hi leute ich bin gerade dabei einen wurzelzieher zu schreiben,<br />
doch wenn die variable teilen unter 0.5 ist dann wird die if abfrage garnicht aufgerufen hier der code:<br />
#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main(){<br />
double teilen = 0.1,test = 0,ergebniss = 0;</p>
<p>double eingabe;<br />
cin&gt;&gt;eingabe;</p>
<p>getchar();<br />
while (test == 0,eingabe &gt; teilen * 2){<br />
ergebniss = eingabe/teilen;<br />
cout&lt;&lt;&quot;teilen:&quot;&lt;&lt;teilen&lt;&lt;endl; //nur zur hilfe</p>
<p>cout&lt;&lt;&quot;ergebniss: &quot;&lt;&lt;ergebniss&lt;&lt;endl;//nur zur Hilfe</p>
<p>if(teilen == ergebniss)<br />
{<br />
cout&lt;&lt;&quot;Das ergebniss lautet: &quot;&lt;&lt;teilen;<br />
test = 1;<br />
getchar();<br />
}<br />
teilen = teilen + 0.1;</p>
<p>}<br />
getchar();<br />
return 0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2322595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2322595</guid><dc:creator><![CDATA[lcp]]></dc:creator><pubDate>Sat, 11 May 2013 10:39:20 GMT</pubDate></item><item><title><![CDATA[Reply to wurzelzieher problem on Sat, 11 May 2013 11:17:15 GMT]]></title><description><![CDATA[<p>Die Zahl 0.1 ist in Fließkommadarstellung nicht exakt darstellbar. Wenn du teiler = 0.1 schreibst, ist das in Wirklichkeit sowas wie 0.1000000000000000055511151231257827021181583404541015625. Diese Zahl ein paar mal aufaddieren ergibt also höchstens mit viel Glück (d.h. Rundungsfehler) irgendwann mal 0.5 (diese Zahl ist exakt darstellbar).</p>
<p>BTW dass das nicht dein einziges Problem ist, ist dir hoffentlich klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2322603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2322603</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sat, 11 May 2013 11:17:15 GMT</pubDate></item><item><title><![CDATA[Reply to wurzelzieher problem on Sat, 11 May 2013 11:47:25 GMT]]></title><description><![CDATA[<p>Du solltest Fließkommazahlen nicht einfach direkt vergleichen.<br />
Das ist verpönt in der Programmierung.<br />
Lies dir das durch: <a href="http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/" rel="nofollow">http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/</a></p>
<p>Außerdem bitte den Code in Codetags setzen und formatieren:</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int main()
{
    double teilen = 0.1,test = 0,ergebniss = 0;

    double eingabe;
    cin&gt;&gt;eingabe;

    getchar();
    while (test == 0,eingabe &gt; teilen * 2)
    {
        ergebniss = eingabe/teilen;
        cout&lt;&lt;&quot;teilen:&quot;&lt;&lt;teilen&lt;&lt;endl; //nur zur hilfe

        cout&lt;&lt;&quot;ergebniss: &quot;&lt;&lt;ergebniss&lt;&lt;endl;//nur zur Hilfe

        if(teilen == ergebniss)
        {
            cout&lt;&lt;&quot;Das ergebniss lautet: &quot;&lt;&lt;teilen;
            test = 1;
            getchar();
        }

        teilen = teilen + 0.1;
    }
    getchar();
}
</code></pre>
<p>Mein Compiler gibt mir eine wichtige Warnung aus:</p>
<p>GCC 4.8 schrieb:</p>
<blockquote>
<p>TEMP2.cxx|14|warning: left operand of comma operator has no effect [-Wunused-value]|</p>
</blockquote>
<p>Du wolltest wohl eher eine Konjunktion mit <code>&amp;&amp;</code> , so verknüpft man nämlich logische Ausdrücke in C++.</p>
<p>Außerdem benutzt du eine bescheuerte Methode, um die Schleife abzubrechen. Kennst du <code>break</code> ?</p>
<p>Und <code>ergebniss</code> könntest du lokaler deklarieren, in der Schleife.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2322608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2322608</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 11 May 2013 11:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to wurzelzieher problem on Sat, 11 May 2013 14:57:17 GMT]]></title><description><![CDATA[<p>Dass das direkte Vergleichen von Gleitkommazahlen verpönt ist, ist eigentlich das falsche Argument – wichtig ist, dass es oft nicht so wie gedacht funktioniert. <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="😉"
    /><br />
Der Typ von <code>ergebniss</code> ist ein Grunddatentyp, daher ist es auch in Ordnung, es vor die Schleife zu ziehen, finde ich. Bei anderen Typen – insbesondere Klassentypen mit nichttrivialen Konstruktoren – kann die Position aber schon wichtig sein!<br />
Auf diese Weise die Schleife abzubrechen ist tatsächlich unschön, aber es gibt anscheinend einige Lehrer, die es so lehren (und fordern) …</p>
<p>Übrigens, Ergebnis schreibt man üblicherweise genau so: ⤚⇒ Ergebnis ⇐⤙</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2322640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2322640</guid><dc:creator><![CDATA[Sonnenreagenz]]></dc:creator><pubDate>Sat, 11 May 2013 14:57:17 GMT</pubDate></item><item><title><![CDATA[Reply to wurzelzieher problem on Sat, 11 May 2013 15:09:05 GMT]]></title><description><![CDATA[<blockquote>
<p>Der Typ von ergebniss ist ein Grunddatentyp, daher ist es auch in Ordnung, es vor die Schleife zu ziehen, finde ich.</p>
</blockquote>
<p>Findest du? Macht aber keiner.</p>
<blockquote>
<p>aber es gibt anscheinend einige Lehrer, die es so lehren (und fordern) …</p>
</blockquote>
<p>Macht es das besser?<br />
Und wenn sie es fordern, dann ist Schluss mit lustig. Dann muss man eingreifen und diesen Blödsinn beenden. Es wird, und da wette ich drum', keinen einzigen C/C++/etc.-Prof, der <code>break</code> für Schleifen nicht kennt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2322642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2322642</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 11 May 2013 15:09:05 GMT</pubDate></item></channel></rss>