<?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[if (größere Zahl&amp;gt;kleiner Zahl) funktioniert nicht!]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich programmiere jetzt seit 1 Woche in c++ und habe irgendwelche sachen gesucht die ich mit meinen bescheidenen Programmierkenntnissen im Moment schon machen kann. Also kam ich auf die Idee den dritten Schnittpunkt der beiden Funktionen x^2 und 2^x so genau wie möglich zu bestimmen. Ich bin dann auf folgendes Programm gekommen:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;conio.h&gt;
using namespace std;

double Funktionen(double);
double Funktion1 (double);
double Funktion2 (double);

int main ()
{
    double x=0;
    double dy1,dy2;
    double z=1;

    anfang:
    dy1=Funktionen(x);                              
    x=x+z;
    dy2=Funktionen(x);

    if ((dy1=0) || (dy2=0))                         //Wenn eine Differenz null wäre würden ja beide Graphen den
    {                                               //gleichen Punkt haben und den versuche ich ja herauszufinden.Dieser Absatz ist aber noch nicht fertig...
         cout&lt;&lt;&quot;x=&quot;&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;y2;
         goto ende;
    }

    if (dy2&lt;dy1)                                    //Wenn die zweite Differenz kleiner ist wäre ich ich dem
    {                                               //Schnittpunkt schonmal näher gekommen.
        double y1,y2;
        y1=Funktion1(x);
        y2=Funktion2(x);
        if (y1&lt;y2)                                  //Ich gebe den kleinere y-Wert aus, damit man die Annäherung
        {                                           //an den Schnittpunkt im laufenden Programm besser sehen kann.
             cout&lt;&lt;&quot;x=&quot;&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;y1;          
        }
        if (y1&gt;y2)
        {
             cout&lt;&lt;&quot;x=&quot;&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;y2;
        }
        goto anfang;
    }

    if (dy1&lt;=dy2)                                    //Wenn die zweite Differenz größer oder gleich ist wäre ich dem
    {                                                //Schnittpunkt nicht näher gekommen, darum keine Ausgabe.
        x=x-z;                                       
        z=z/(-2);                                       
        goto anfang;
    }

ende:
cout&lt;&lt;&quot;x=&quot;&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;y2;    
getch();    
}    

double Funktionen(double x)
{
        double y1=Funktion1(x);

        double y2=Funktion2(x);                      

        double dy;                       //In diesem Absatz wird der Abstand zwischen den beiden y-Werten bestimmt
            dy=y1-y2;
            dy=dy*dy;                    //Hier wird die Differenz hoch 2 genommen um einen positiven Wert zu finden

        return dy;                       
}

double Funktion1(double x)               //Die Funktion 2^x wird berechnet
{
        double y1=1;                      
        for(int i=0;i&lt;x;++i)          
        {
            y1=y1*2;
        }
        return y1;
}

double Funktion2(double x)               //Die Funktion x^2 wird berechnet
{
       double y2;
       y2=x*x;
       return y2;
}
</code></pre>
<p>Mein Problem ist, dass das Programm keine Ausgabe erzeugt. Durch ausprobieren habe ich herausgefunden, dass es immer denkt die beiden Differenzenquadrate(ka ob es das Wort gibt) wären gleich. Ich habe sogar einmal den Differenzquadraten bestimmte Werte zugewiesen:</p>
<p>statt:</p>
<pre><code class="language-cpp">dy1=Funktionen(x);                              
x=x+z;
dy2=Funktionen(x);
</code></pre>
<p>habe ich das gesetzt:</p>
<pre><code class="language-cpp">dy1=2;
dy1=1;
</code></pre>
<p>es funktioniert trotzdem nicht. Der Computer glaubt immer noch das beide Zahlen gleich sind. Liegt es daran, dass beide double-Werte sind. Und wenn ja gibt es einen anderen Kommzahl Typ mit dem das funktionieren würde?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/222978/if-größere-zahl-gt-kleiner-zahl-funktioniert-nicht</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 18:50:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/222978.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 20 Sep 2008 08:38:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to if (größere Zahl&amp;gt;kleiner Zahl) funktioniert nicht! on Sat, 20 Sep 2008 08:46:30 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich programmiere jetzt seit 1 Woche in c++ und habe irgendwelche sachen gesucht die ich mit meinen bescheidenen Programmierkenntnissen im Moment schon machen kann. Also kam ich auf die Idee den dritten Schnittpunkt der beiden Funktionen x^2 und 2^x so genau wie möglich zu bestimmen. Ich bin dann auf folgendes Programm gekommen:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;conio.h&gt;
using namespace std;

double Funktionen(double);
double Funktion1 (double);
double Funktion2 (double);

int main ()
{
    double x=0;
    double dy1,dy2;
    double z=1;

    anfang:
    dy1=Funktionen(x);                              
    x=x+z;
    dy2=Funktionen(x);

    if ((dy1=0) || (dy2=0))                         //Wenn eine Differenz null wäre würden ja beide Graphen den
    {                                               //gleichen Punkt haben und den versuche ich ja herauszufinden.Dieser Absatz ist aber noch nicht fertig...
         cout&lt;&lt;&quot;x=&quot;&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;y2;
         goto ende;
    }

    if (dy2&lt;dy1)                                    //Wenn die zweite Differenz kleiner ist wäre ich ich dem
    {                                               //Schnittpunkt schonmal näher gekommen.
        double y1,y2;
        y1=Funktion1(x);
        y2=Funktion2(x);
        if (y1&lt;y2)                                  //Ich gebe den kleinere y-Wert aus, damit man die Annäherung
        {                                           //an den Schnittpunkt im laufenden Programm besser sehen kann.
             cout&lt;&lt;&quot;x=&quot;&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;y1;          
        }
        if (y1&gt;y2)
        {
             cout&lt;&lt;&quot;x=&quot;&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;y2;
        }
        goto anfang;
    }

    if (dy1&lt;=dy2)                                    //Wenn die zweite Differenz größer oder gleich ist wäre ich dem
    {                                                //Schnittpunkt nicht näher gekommen, darum keine Ausgabe.
        x=x-z;                                       
        z=z/(-2);                                       
        goto anfang;
    }

ende:
cout&lt;&lt;&quot;x=&quot;&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;y2;    
getch();    
}    

double Funktionen(double x)
{
        double y1=Funktion1(x);

        double y2=Funktion2(x);                      

        double dy;                       //In diesem Absatz wird der Abstand zwischen den beiden y-Werten bestimmt
            dy=y1-y2;
            dy=dy*dy;                    //Hier wird die Differenz hoch 2 genommen um einen positiven Wert zu finden

        return dy;                       
}

double Funktion1(double x)               //Die Funktion 2^x wird berechnet
{
        double y1=1;                      
        for(int i=0;i&lt;x;++i)          
        {
            y1=y1*2;
        }
        return y1;
}

double Funktion2(double x)               //Die Funktion x^2 wird berechnet
{
       double y2;
       y2=x*x;
       return y2;
}
</code></pre>
<p>Mein Problem ist, dass das Programm keine Ausgabe erzeugt. Durch ausprobieren habe ich herausgefunden, dass es immer denkt die beiden Differenzenquadrate(ka ob es das Wort gibt) wären gleich. Ich habe sogar einmal den Differenzquadraten bestimmte Werte zugewiesen:</p>
<p>statt:</p>
<pre><code class="language-cpp">dy1=Funktionen(x);                              
x=x+z;
dy2=Funktionen(x);
</code></pre>
<p>habe ich das gesetzt:</p>
<pre><code class="language-cpp">dy1=2;
dy1=1;
</code></pre>
<p>es funktioniert trotzdem nicht. Der Computer glaubt immer noch das beide Zahlen gleich sind. Liegt es daran, dass beide double-Werte sind. Und wenn ja gibt es einen anderen Kommzahl Typ mit dem das funktionieren würde?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1585153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1585153</guid><dc:creator><![CDATA[B1*d3]]></dc:creator><pubDate>Sat, 20 Sep 2008 08:46:30 GMT</pubDate></item><item><title><![CDATA[Reply to if (größere Zahl&amp;gt;kleiner Zahl) funktioniert nicht! on Sat, 20 Sep 2008 09:08:05 GMT]]></title><description><![CDATA[<p>B1@d3 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if ((dy1=0) || (dy2=0))
</code></pre>
</blockquote>
<p>du weist schon was &quot;dy1 = 0&quot; bewirkt??</p>
<p>dy1 wird mit 0 belegt, und da da eigendlich nichts schiefgehen kann ist die bedingung wahr</p>
<p>da c++ lazy evaluation kennt (also es reicht wenn ein ausdruck true ergit bei einem oder in if, dann wird der zweite gar nicht erst geprüft) bleibt dy2 auf dem init wert</p>
<p>aber dy1 ist 0</p>
<p>versuchs mal mit</p>
<pre><code class="language-cpp">if ( (dy1 == 0) || (dy2 == 0) )
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1585157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1585157</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 20 Sep 2008 09:08:05 GMT</pubDate></item><item><title><![CDATA[Reply to if (größere Zahl&amp;gt;kleiner Zahl) funktioniert nicht! on Sat, 20 Sep 2008 09:23:08 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>B1@d3 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if ((dy1=0) || (dy2=0))
</code></pre>
</blockquote>
<p>du weist schon was &quot;dy1 = 0&quot; bewirkt??</p>
<p>dy1 wird mit 0 belegt, und da da eigendlich nichts schiefgehen kann ist die bedingung wahr</p>
</blockquote>
<p>Die Bedingung ist nicht wahr. Der Ausdruck dy1 = 0 weist 0 an dy1 zu und gibt danach 0 zurück. 0 wird im bool-Kontext als false interpretiert, also hat (dy1=0) den Wert false. Der zweite Ausdruck (dy2=0) wird also doch ausgewertet, ergibt aber ebenfalls false, sodass in jedem Fall in den else-Zweig gesprungen wird.</p>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>da c++ lazy evaluation kennt (also es reicht wenn ein ausdruck true ergit bei einem oder in if, dann wird der zweite gar nicht erst geprüft) bleibt dy2 auf dem init wert</p>
</blockquote>
<p>Normalerweise nennt man das eher short ciruiting, lazy evaluation ist was anderes. Lazy evaluation bedeutet eher, dass eine Anweisung oder ein Funktionsaufruf oder ähnliches nicht ausgeführt wird, wenn er hingeschrieben wird, sondern erst dann, wenn das Ergebnis benötigt wird. Das bietet C++ nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1585162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1585162</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Sat, 20 Sep 2008 09:23:08 GMT</pubDate></item><item><title><![CDATA[Reply to if (größere Zahl&amp;gt;kleiner Zahl) funktioniert nicht! on Sat, 20 Sep 2008 13:48:44 GMT]]></title><description><![CDATA[<p>War echt blös von mir, dass ich das nicht gesehen hatte. Also das war wirklich der Fehler den ich gesucht hatte. Zwar wird diese Anweisung dann nicht ausgeführt, weil eben false zurückgegeben wird. Aber da jetzt beide den Wert 0 haben wird die dritte if-anweisung ausgeführt. Thx also dafür...</p>
<p>Musste auch für 2^x eine neue Funktion nehmen, weil meine Funktion nur funktionierte wenn x eine ganze positive Zahl war...</p>
<p>hab es dann mit pow(2,x) gemacht. Hier mein Endquellcode:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;conio.h&gt;
#include &lt;cmath&gt; 
#include &lt;iomanip&gt;
using namespace std;

double Differenz(double);

int main ()
{
    double x=0;
    double dy1,dy2;
    double z=1;

    anfang:
    dy1=Differenz(x);                              
    x=x+z;
    dy2=Differenz(x);
    if ((dy1==0) || (dy2==0))                       //Wenn eine Differenz null wäre würden ja beide Graphen den
    {                                               //gleichen Punkt haben und den versuche ich ja herauszufinden.                        
       goto ende;
    }

    if (dy2&lt;dy1)                                    //Wenn die zweite Differenz kleiner ist wäre ich ich dem
    {                                               //Schnittpunkt schonmal näher gekommen.
        double y1 = pow(2, x);
        double y2 = pow(x, 2);
        getch();
        if (y1&lt;y2)                                  //Ich gebe den kleinere y-Wert aus, damit man die Annäherung
        {                                           //an den Schnittpunkt im laufenden Programm besser sehen kann.
             cout&lt;&lt;&quot;x=&quot;&lt;&lt;setprecision(20)&lt;&lt;setw(24)&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;setprecision(20)&lt;&lt;setw(24)&lt;&lt;y1&lt;&lt;&quot;\n&quot;;          
        }
        if (y1&gt;y2)
        {
             cout&lt;&lt;&quot;x=&quot;&lt;&lt;setprecision(20)&lt;&lt;setw(24)&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;setprecision(20)&lt;&lt;setw(24)&lt;&lt;y2&lt;&lt;&quot;\n&quot;;
        }
        goto anfang;
    }

    if (dy1&lt;=dy2)                                    //Wenn die zweite Differenz größer oder gleich ist wäre ich dem
    {                                                //Schnittpunkt nicht näher gekommen, darum keine Ausgabe.
        x=x-z;                                       
        z=z/(-2);                                       
        goto anfang;
    }
ende:
cout&lt;&lt;&quot;x=&quot;&lt;&lt;setprecision(20)&lt;&lt;setw(10)&lt;&lt;x&lt;&lt;&quot;     y=&quot;&lt;&lt;setprecision(20)&lt;&lt;setw(24)&lt;&lt;pow(x,2)&lt;&lt;&quot;\n&quot;;  
getch();    
}    

double Differenz(double x)
{
        double y1=pow(2, x);             //Hier wird die Funktion 2^x berechnet

        double y2=pow(x, 2);             //Hier wird die Funktion x^2 berechnet         

        double dy;                       //In diesem Absatz wird der Abstand zwischen den beiden y-Werten bestimmt
            dy=y1-y2;
            dy=dy*dy;                    //Hier wird die Differenz hoch 2 genommen um einen positiven Wert zu finden

        return dy;                       
}                       
}
</code></pre>
<p>Um einiges kürzer als der vorher^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1585269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1585269</guid><dc:creator><![CDATA[B1*d3]]></dc:creator><pubDate>Sat, 20 Sep 2008 13:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to if (größere Zahl&amp;gt;kleiner Zahl) funktioniert nicht! on Sat, 20 Sep 2008 14:02:40 GMT]]></title><description><![CDATA[<p>Dann hätte ich noch eine Frage:<br />
Bei der Ausführung des Programms wird ungefähr das ausgegeben:</p>
<p>x= leerleerleerleerleerle-0.x (statt leer leerzeichen)<br />
x= leerleerleerleerle-0.xxxx<br />
x= -0.xxxxxxxxxxxxxxxxxxx<br />
.<br />
.<br />
.</p>
<p>Wie schafft man es das es so aussieht:</p>
<p>x= -0.xxx<br />
x= -0.xxxxxx<br />
x= -0.xxxxxxxxxxxxxxxxxx<br />
.<br />
.<br />
.</p>
<p>???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1585275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1585275</guid><dc:creator><![CDATA[B1*d3]]></dc:creator><pubDate>Sat, 20 Sep 2008 14:02:40 GMT</pubDate></item><item><title><![CDATA[Reply to if (größere Zahl&amp;gt;kleiner Zahl) funktioniert nicht! on Sat, 20 Sep 2008 14:44:15 GMT]]></title><description><![CDATA[<p><a href="http://www.cplusplus.com/reference/iostream/manipulators/left.html" rel="nofollow">std::left</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1585293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1585293</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 20 Sep 2008 14:44:15 GMT</pubDate></item></channel></rss>