// 二分法.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;
}