Schleife Frage?



  • Hallo hab Probleme mit dem folgenden Quelltext. Warum wird die Schleife nur einmal durchlaufen? Nach dem ersten durchlauf hat f doch den Wert 3, warum wird die Schleife dann nicht nochmal durchlaufen?

    #include "stdafx.h"
    #include <iostream>

    using namespace std;

    int main(void)
    { double x,min,max,f;
    cout<<"Programm zur Annaeherung an eine Nullstelle der Funktion f(x)=x3+x2+2x+3\n\n";
    min=-50;
    max=50;
    do{
    x=(min+max)/50;
    f=x*x*x+x*x+2*x+3;
    cout<<"f("<<x<<") = "<<f<<endl;
    if (f>=0)
    {
    max=x;
    }
    else
    {
    min=x;
    }
    cout<<"min = "<<min<<" max = "<<max<<endl;
    }
    while ((f<0.01) && (f>=0));

    return 0;

    }



  • bourne schrieb:

    while ((f<0.01) && (f>=0));
    

    Diese Bedingung kann nie true sein. => Schleife wird nur einmal durchlaufen...

    Gruß Caipi



  • Klar jetzt hab ichs auch verstanden hatte ein denkfehler.



  • Caipi schrieb:

    bourne schrieb:

    while ((f<0.01) && (f>=0));
    

    Diese Bedingung kann nie true sein. => Schleife wird nur einmal durchlaufen...

    Gruß Caipi

    Klar kann die Bedingung wahr werden, aber nur wenn f im Intervall [0,0,01[ liegt (und 3 ist außerhalb dieses Intervalls).



  • CStoll schrieb:

    Caipi schrieb:

    bourne schrieb:

    while ((f<0.01) && (f>=0));
    

    Diese Bedingung kann nie true sein. => Schleife wird nur einmal durchlaufen...

    Gruß Caipi

    Klar kann die Bedingung wahr werden, aber nur wenn f im Intervall [0,0,01[ liegt (und 3 ist außerhalb dieses Intervalls).

    Jep. Hast recht. Weiß nicht, wo ich mein Hirn beim schreiben gelassen habe... 🙄


Anmelden zum Antworten