Phương pháp chia đôi tìm nghiệm gần đúng của đa thức

BÀI TOÁN
Tìm nghiệm gần đúng của đa thức f(x) = 0 với khoảng cách ly nghiệm [a,b] và sai số gần đúng Epxilon.
CODE MẪU
Mã:
#include "math.h"
#include "conio.h"
#include "iostream.h"
/*Nhap vao mot da thuc luu he so trong A[] va co Bac*/
double*NhapDaThuc(int Bac) {
	double *A = new double [Bac+1];
	for(int i= 0; i<=Bac; i++) {
		cout<<"a"<<i<<" = ";
		cin>>A[i];
	}
	return A;
}

/*Xuat da thuc co he so A[] va Bac*/
void XuatDaThuc( double*A,int Bac, char*s) {
	cout<<"Da Thuc Vua Nhap la:\n";
	cout<<s<<" = "<<A[0];
	for(int i=1; i<=Bac; i++){
		if(A[i]>0) {
			cout<<" + "<<A[i]<<"x^"<<i;
		}
		if(A[i]<0) {
			cout<<A[i]<<"x^"<<i;
		}
	}
}

/*Tinh gia tri cua da thuc tai diem x*/
/*Su dung luoc do hoocner*/
double f(double*A, int Bac, double x) {
	 double KetQua = A[Bac];
	for(int i=Bac-1; i>=0; i--)
		KetQua=KetQua*x + A[i];
	return KetQua;
}
/*Phuong phap chia doi*/
double PPChiaDoi(double*A, int Bac, double a, double b, double Epxilon){
	double c=(b+a)/2, E = fabs(b-a);
	while(E>Epxilon){
		if(f(A,Bac,a)*f(A,Bac,c)<=0)
			b = c;
		else
			a = c;
		E = fabs(b -a);
		c = (b + a)/2;
	}
	return a;
}
/*Chuong Trinh Chinh*/
void main(){
	clrscr();
	double*Fx,a,b,Epxilon;
	int n;
	cout<<"Nhap Vao Bat Cua Phuong Trinh:";
	cin>>n;
	Fx = NhapDaThuc(n);
	XuatDaThuc(Fx,n,"f(x)");
	cout<<"\nNhap Khoang Cach Ly Nghiem [a,b]:\n";
	cout<<"a = ";
	cin>>a;
	cout<<"b = ";
	cin>>b;
	cout<<"Nhap Sai So Gan Dung Epxilon: ";
	cin>>Epxilon;
	cout<<"Nghiem x = "<<PPChiaDoi(Fx,n,a,b,Epxilon);
	getch();
	delete Fx;
}