Schreiben Sie Code, um die Quadratwurzel mithilfe der Bisektionsmethode in C ++ zu finden? [abgeschlossen

StackOverflow https://stackoverflow.com/questions/19844698

  •  29-07-2022
  •  | 
  •  

Frage

Die Halbierung ist so weit, dass ich weiß, dass Sie Ihre Suche einschränken und den spezifischen Wert im Intervall erreichen. Bitte geben Sie mir ein Beispiel davon, wie man einen generischen Code erstellt, um Quadratwurzeln zu finden. Die Art und Weise, wie ich denke, nimmt drei Variablen niedrig, mittel, hoch. High = UserInput, Low = 0, Mid (niedrig + hoch) /2, Problem ist, wie die Werte dann geändert werden.

War es hilfreich?

Lösung

#include <iostream>
using namespace std;

int main() {
   int val;
   cout << "Enter the number: ";
   cin >> val;

   if( val< 0) {
      cout<< "According to my maths its not possible." << endl;
   } else {
      float low = 0, high = val;
      float mid = (low  + high)/2;
      int c = 0;

      while (c != 1) {
         if(mid * mid = val) {
            cout << "Square root is: " << mid <<endl;
            c = 1;
         } else {
            if(mid * mid > val) {
               high = mid;
               mid = (low + high)/2;
            } else {
               low = mid;
               mid = (low + high)/2;
            }
         }
      }
   }
   return 0;
}

Andere Tipps

Nehmen wir an, wir suchen sqrt(N)

Wie beschrieben hier, Sie müssen den Durchschnitt von Niedrig und Hoch finden, wenn das Quadrat des Durchschnitts größer ist als N, Wir ändern den hohen Wert mit dem Durchschnitt, den wir gerade gefunden haben, wenn er geringer ist als N, Wir ändern den niedrigen Wert mit dem Durchschnitt. Und wir wiederholen die Schritte so oft, um die erforderliche Präzision zu erfüllen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top