2013-11-07 4 views
-5

Bisection - насколько я знаю, сужает ваш поиск и достигает определенного значения в интервале. пожалуйста, дайте мне пример того, как сделать общий код, чтобы найти квадратный корень. то, как я думаю, принимает три переменные: низкий, средний, высокий. high = userinput, low = 0, mid (low + high)/2, проблема заключается в том, как изменить значения.написать код, чтобы найти квадратный корень, используя метод bisection в C++?

+2

Мы здесь не для того, чтобы делать домашнее задание для вас. ** ВЫ ** напишите код. то мы, возможно, попробуем помочь в ее исправлении. –

+0

Если у вас нет попытки, мы не можем вам помочь, мы не делаем для вас домашнее задание. – PurityLake

+0

Надеюсь, если вы планируете продолжить изучение кодирования, вы на самом деле потратите время, чтобы узнать и понять его. –

ответ

4
#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; 
} 
+0

@ user2966111 Пожалуйста, приложите усилия, чтобы понять, почему это работает. Вы никогда не будете успешны в своем классе, если просто скопируете вставить решение. – stefan

+0

какое объяснение за «c = 0» и «while (c! = 1)»? – bagustris

+0

c = 0 является начальным условием, а c! = 1 - проверить условие, в то время как верно, что он выйдет из цикла (c = 1) – bagustris

0

Позволяет сказать, мы ищем sqrt(N)

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