Witam, mam problem, którego nie potrafię rozwiązać. Mam stworzyć który pokaże różnicę w obliczeniach między sposobem "na piechotę" rozwiązania wielomianu, a schematem hornera. Wydaje mi się, że program zaokrągla te liczby, choć możliwe, że cała koncepcja jest nie taka jaka powinna być. Bardzo proszę o pomoc.
Mój kod:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
double horner(double tab[],int st, int x)
{
double wynik = tab[0];
for(int i=1;i<=st;i++)
wynik = wynik*x + tab[i];
return wynik;
}
double horner_3(double tab[], int st, double x){
double wynik;
double p = 1;
for(int i = 0;i<=st;i++){
for(int k = 0;k<st-i;k++){
p = p*x;
}
wynik = wynik + tab[i]*p;
p = 1;
}
return wynik;
}
int main()
{
srand( time( NULL ) );
cout<<"Podaj wielkosc wielomianu: "<<endl;
double x;
int n;
cin >> n;
double* a=new double[n+1];
for(int i = 0; i<n+1;i++){
a[i] = (double)rand()/(RAND_MAX+1);
//a[i] = (rand()%2)+1;
}
cout<<"Podaj wartosc x: "<<endl;
cin>>x;
for(int i = 0; i<n+1;i++){
cout<<a[i]<<endl;
}
cout<<"\nWyniki: "<<endl;
cout.precision( 30 );
cout << horner(a,n,x) << endl;
cout << horner_3(a,n,x) << endl;
return 0;
}