Abbruch bei gleicher Ausgabe (for Schleife)



  • huhu zusammen,hab folgendes Problem:

    Ich berechne anhand einer Formel die wurzel einer Zahl näherungsweise,die maximale anzahl an Durchläufen wird eingegeben!
    Am Ende gebe ich das Ergebnis und die errechneten Zwischenschritte aus...soweit so gut,das Programm läuft und tut was es soll...
    Nun würde ich aber gerne,wenn ich zur Berechnung 10 Schritte eingebe aber nur 5 bis zur Wurzel brauch nicht von Schritt 5-10 das selbe ergebnis da stehen haben,quasi soll die Berechnung abbre hen sobald sich das Ergebnis einmal wiederholt...weiß jemand wie? (while Schleife,aber wo/wie genau?)

    #include <iostream>
    using namespace std;
    
    double wurzel(double eingabe);
    
    int main(int argc, char** argv) {
    
      // Variablen
      double zahl = 0;
    
      cout << "Aufgabe 3.1 - Iterative Berechnung\n" << endl;
    
      // Benutzereingaben
      cout << "Bitte eine reele Zahl > 0 zur Wurzelberechnung eingeben: ";
      cin >> zahl;
    
      // Ausgabe
      cout << "Die Wurzel der Zahl " << zahl << " betraegt naeherungsweise " << wurzel(zahl) << "\n" << endl;
    
      return 0;
    }
    
    //------------------------------------------------------------------------------
    // Funktion zur Wurzelberechnung
    
    double wurzel(double eingabe) {
    
      // Variablen
      double ergebnis = 0.1; // Beliebiger Anfangswert > 0
      unsigned short genauigkeit = 0;
    
      // Genauigkeit vom Benutzer erfragen
      cout << "Anzahl der Schleifendurchlaeufe (Genauigkeit): ";
      cin >> genauigkeit;
    
      for (unsigned short durchlauf = 0; durchlauf < genauigkeit; durchlauf++) {
        // Naeherungsformel
        ergebnis = 0.5 * (ergebnis + eingabe / ergebnis);
        cout << "Zwischenergebnis " << durchlauf+1 << ": " << ergebnis << endl;
      }
    
      return ergebnis;
    }
    


  • Ergebnis zwischenspeichern, mit neuem Ergebnis vergleichen und im Falle der Gleichheit die Schleife mit break verlassen.



  • Also falls ergebnis=ergebnis durchlauf +1,Abbruch,aber wo und wie bau ichs ein 😕



  • Enfi schrieb:

    Also falls ergebnis=ergebnis durchlauf +1,Abbruch,aber wo und wie bau ichs ein 😕

    Eher falls aktuelles Eregebnis == letztes Ergebnis dann Abbruch. Jetzt klarer, an welche Stelle du es setzen kannst?

    EDIT: Übrigens kannst du dich gleich mal schlau machen zum Thema Vergleich von double-Variablen. Das ist nicht einfach mit einem "==" getan, da Fließkommazahlen intern nicht exakt dargestellt werden können. Dazu gibt es unzählige Threads hier im Forum, einfach mal suchen. 🙂


Anmelden zum Antworten