Pregunta

La bisección es hasta donde yo sé, reduce su búsqueda y alcanza el valor específico en el intervalo. Por favor, dame una muestra de eso cómo hacer un código genérico para encontrar raíz cuadrada. La forma en que creo que es tomar tres variables bajas, medianas, altas. High = UserInput, Low = 0, Mid (bajo + alto) /2, el problema es cómo cambiar los valores en ese momento.

¿Fue útil?

Solución

#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;
}

Otros consejos

Digamos que estamos buscando sqrt(N)

Como se describe aquí, debe encontrar el promedio de bajo y alto, si el cuadrado de promedio es mayor que N, cambiamos el alto valor con el promedio que acabamos de encontrar, si es menor que N, cambiamos el valor bajo con el promedio. Y repetimos los pasos tantas veces para satisfacer la precisión requerida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top