Написать код, чтобы найти квадратный корень, используя метод деления пополам в C++?

Насколько я знаю, деление пополам сужает область поиска и достигает определенного значения в интервале. пожалуйста, дайте мне пример того, как сделать общий код для поиска квадратного корня. я думаю, что три переменных - низкий, средний и высокий. высокий = пользовательский вход, низкий = 0, средний (низкий + высокий) /2, проблема в том, как изменить значения.

2 ответа

Решение
#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;
}

Допустим, мы ищем sqrt(N)

Как описано здесь, вы должны найти среднее значение LOW и HIGH, если квадрат среднего больше Nмы меняем высокое значение на среднее значение, которое мы только что нашли, если оно меньше NМы меняем низкое значение на среднее. И мы повторяем шаги столько раз, чтобы удовлетворить требуемую точность.

Другие вопросы по тегам