// 二分法.cpp : 定義控制檯應用程序的入口點。
//
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
void function_formula() {
string s = "f(x)=X2+2X-1";
cout<< s<<endl;
}
double function_answer(double x) {
return x*x + 2 * x - 1;
}
double need_range() {
double x;
cin >> x;
return x;
}
int* range() {
int x1, x2;
cout << "輸入左值x1"<<endl;
x1 = need_range();
cout << "輸入右值X2" << endl;
x2 = need_range();
int *r = new int[2];
int length = 2;
r[0] = length;
r[1] = x1;
r[2] = x2;
return r;
}
void test() {
while (true)
{
cout << "函數式:" ;
function_formula();
double x1, x2;
cout << "輸入左值x1" << endl;
x1 = need_range();
cout << "輸入右值X2" << endl;
x2 = need_range();
if (function_answer(x1)*function_answer(x2)<0)
{
double border = 0.00001;
while (true)
{
double temp = (x1 + x2) / 2;
if (function_answer(temp)>0)
{
if (function_answer(x1)>0)
{
x1 = temp;
}
else
{
x2 = temp;
}
}
else
{
if (function_answer(x1)>0)
{
x2 = temp;
}
else
{
x1 = temp;
}
}
if (abs(x1 - x2)<border)
{
cout << temp << endl;
break;
}
}
}
else
{
cout << "兩端不爲異號,請重新輸入" << endl;
}
cout << "請選擇時候繼續,如果繼續請按1,否則按0" << endl;
int key;
cin >> key;
if (key == 0)
{
break;
}
}
}
int main()
{
test();
cout<<sqrt(2);
system("pause");
return 0;
}