witam
mam taki program:
#include<iostream>
#include<cstdlib>
#include<cmath>
#include <iomanip>
using namespace std;
int main()
{
double x1,x2;
double a,b,c;
double delta,p_delta,x,x1p,x2p;
double blad_bez_x1,blad_wzgl_x1;
double blad_bez_x2,blad_wzgl_x2;
cout << "x1 = "; cin >> x1;
cout << "x2 = "; cin >> x2;
a=1;
b=-x1-x2;
c=x1*x2;
delta = b*b-4*a*c;
if(delta<0)
cout<<"Rownanie nie ma pierwiastkow"<<endl;
else
{
if(delta==0)
{
x=-b/(2*a);
cout<<endl;
cout<<"Jeden pierwiastek: "<<x<<endl;
}
else
{
x1p=(-b-sqrt(delta))/(2*a);
x2p=(-b+sqrt(delta))/(2*a);
cout<<endl;
cout<<"x1': "<<x1p<<endl;
cout<<"x2': "<<x2p<<endl;
blad_bez_x1=fabs(x1p-x1);
blad_bez_x2=fabs(x2p-x2);
blad_wzgl_x1=(blad_bez_x1/x1)*100;
blad_wzgl_x2=(blad_bez_x2/x2)*100;
cout<<endl;
cout.precision(0);
cout<<"Blad wzgledny x1: "<<fixed<<blad_wzgl_x1<<" %"<<endl;
cout<<"Blad wzgledny x2: "<<fixed<<blad_wzgl_x2<<" %"<<endl;
}
}
cout<<endl;
system("PAUSE");
return 0;
}
użytkownik podaje pierwiastki i dalej program korzysta ze wzorów viete'a.
Na końcu program ma porównać otrzymane pierwiastki z tymi które podał użytkownik.
Przy liczbach zmiennoprzecinkowych już jest problem bo błąd względny może wynosić nawet 100%.
Jak do tego podejść?