Bisection - насколько я знаю, сужает ваш поиск и достигает определенного значения в интервале. пожалуйста, дайте мне пример того, как сделать общий код, чтобы найти квадратный корень. то, как я думаю, принимает три переменные: низкий, средний, высокий. high = userinput, low = 0, mid (low + high)/2, проблема заключается в том, как изменить значения.написать код, чтобы найти квадратный корень, используя метод bisection в C++?
ответ
#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;
}
@ user2966111 Пожалуйста, приложите усилия, чтобы понять, почему это работает. Вы никогда не будете успешны в своем классе, если просто скопируете вставить решение. – stefan
какое объяснение за «c = 0» и «while (c! = 1)»? – bagustris
c = 0 является начальным условием, а c! = 1 - проверить условие, в то время как верно, что он выйдет из цикла (c = 1) – bagustris
Позволяет сказать, мы ищем sqrt(N)
Как описано here, вы должны найти среднее значение LOW и HIGH, если квадрат в среднем больше, чем N
, мы изменяем высокое значение со средним мы просто найдено, если оно меньше N
, мы меняем низкое значение со средним значением. И мы повторяем шаги столько раз, чтобы удовлетворить требуемую точность.
Мы здесь не для того, чтобы делать домашнее задание для вас. ** ВЫ ** напишите код. то мы, возможно, попробуем помочь в ее исправлении. –
Если у вас нет попытки, мы не можем вам помочь, мы не делаем для вас домашнее задание. – PurityLake
Надеюсь, если вы планируете продолжить изучение кодирования, вы на самом деле потратите время, чтобы узнать и понять его. –