was ist an dem progi falsch?



  • bin grad am verzweifeln, weshalb dieses programm nicht tut was es sollte:

    quelltext:

    #include <iostream>
    using namespace std;

    int main()
    {
    double daphne=100;
    double cleo=100;
    int a=0;
    while (cleo>daphne)
    {daphne+=10;
    cleo*=1.05;
    a++;
    }
    cout << "current value of daphne's investment: " << daphne << endl << "current value of cleo's investment: " << cleo << endl << "it took him " << a << " years to exceed daphne's fortune" << endl;
    system("PAUSE");
    return 0;
    }

    irgendwie greift die while schleife nicht, denn als ausgabe krieg ich immer nur 100 für daphne's und 100 für cleo's vermögen, obwohl das ja mit der gestellten bedingung (cleo>daphne) nicht übereinstimmt...



  • Hallo,

    while wird solange ausgeführt wie die Bedingung stimmt. Die stimmt bei dir ja schon mit den Anfangswerten nicht. 100 ist nicht größer als 100. Also wird die Schleife nie ausgeführt.
    Nimm bitte das nächtse mal Code-tags und rücke vernünftig ein, das sieht dann besser aus.



  • ach man, dummer denkfehler...

    hab nun die schleife durch eine do...while ersetzt und das ungleichheitszeichen umgekehrt. funzt jetzt, danke!

    #include <iostream>
    using namespace std;

    #include <iostream>
    using namespace std;

    int main()
    {
    double daphne=100;
    double cleo=100;
    int a=0;
    do{daphne+=10;
    cleo*=1.05;
    a++;
    }while(cleo<daphne);
    cout << "current value of daphne's investment: " << daphne << endl << "current value of cleo's investment: " << cleo << endl << "it took him " << a << " years to exceed daphne's fortune" << endl;
    system("PAUSE");
    return 0;
    }



  • Immer noch keine Code-tags. 🙂

    #include <iostream>
    using namespace std;
    
    int main()
    {
      double daphne=100;
      double cleo=100;
      int a=0;
      do 
      {
        daphne+=10;
        cleo*=1.05;
        a++;
      } while(cleo<daphne);
      cout << "current value of daphne's investment: " << daphne << endl << "current value of cleo's investment: " << cleo << endl << "it took him " << a << " years to exceed daphne's fortune" << endl;
      system("PAUSE");
      return 0;
    }
    


  • Es heisst solange wahr wiederhole die schleife.
    Deine bedienung produziert falsch und somit wird die schleife
    nicht ein einziges mal durchlaufen.

    false = cleo > daphne
    false = 100 > 100

    die bedinung in worten:
    100 ist grösser als 100 ist nicht wahr also falsch



  • oops zu spät gepostet



  • sry wegen den codetags, hab einfach copy->paste gemacht 😃


Anmelden zum Antworten