#include <iostream>
#include <vector>
using namespace std;
// Funkcja obliczająca wartość wielomianu schematem Hornera
double horner(const vector<double>& a, int stopien, double x)
{
double wynik = a[0];
for (int i = 1; i <= stopien; i++)
{
wynik = wynik * x + a[i];
}
return wynik;
}
// Funkcja wczytująca stopień wielomianu i współczynniki
void wczytajDane(int &stopien, vector<double> &a)
{
cout << "Podaj stopien wielomianu: ";
cin >> stopien;
a.resize(stopien + 1); // a0..an
cout << "Podaj wspolczynniki od a" << stopien << " do a0:" << endl;
for (int i = 0; i <= stopien; i++)
{
cout << "a" << (stopien - i) << " = ";
cin >> a[i];
}
}
int main()
{
int stopien;
vector<double> a;
double x = 3; // punkt, w którym liczymy wartość
wczytajDane(stopien, a);
double wynik = horner(a, stopien, x);
// wypisanie wyników
cout << "stopien wielomianu: " << stopien << endl;
for (int i = 0; i <= stopien; i++)
{
cout << "a" << (stopien - i) << " = " << a[i] << endl;
}
cout << "x = " << x << endl;
cout << "w(" << x << ") = " << wynik << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmtjamEgb2JsaWN6YWrEhWNhIHdhcnRvxZvEhyB3aWVsb21pYW51IHNjaGVtYXRlbSBIb3JuZXJhCmRvdWJsZSBob3JuZXIoY29uc3QgdmVjdG9yPGRvdWJsZT4mIGEsIGludCBzdG9waWVuLCBkb3VibGUgeCkKewogICAgZG91YmxlIHd5bmlrID0gYVswXTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHN0b3BpZW47IGkrKykKICAgIHsKICAgICAgICB3eW5payA9IHd5bmlrICogeCArIGFbaV07CiAgICB9CiAgICByZXR1cm4gd3luaWs7Cn0KCi8vIEZ1bmtjamEgd2N6eXR1asSFY2Egc3RvcGllxYQgd2llbG9taWFudSBpIHdzcMOzxYJjenlubmlraQp2b2lkIHdjenl0YWpEYW5lKGludCAmc3RvcGllbiwgdmVjdG9yPGRvdWJsZT4gJmEpCnsKICAgIGNvdXQgPDwgIlBvZGFqIHN0b3BpZW4gd2llbG9taWFudTogIjsKICAgIGNpbiA+PiBzdG9waWVuOwoKICAgIGEucmVzaXplKHN0b3BpZW4gKyAxKTsgLy8gYTAuLmFuCiAgICBjb3V0IDw8ICJQb2RhaiB3c3BvbGN6eW5uaWtpIG9kIGEiIDw8IHN0b3BpZW4gPDwgIiBkbyBhMDoiIDw8IGVuZGw7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSBzdG9waWVuOyBpKyspCiAgICB7CiAgICAgICAgY291dCA8PCAiYSIgPDwgKHN0b3BpZW4gLSBpKSA8PCAiID0gIjsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBpbnQgc3RvcGllbjsKICAgIHZlY3Rvcjxkb3VibGU+IGE7CiAgICBkb3VibGUgeCA9IDM7IC8vIHB1bmt0LCB3IGt0w7NyeW0gbGljenlteSB3YXJ0b8WbxIcKCiAgICB3Y3p5dGFqRGFuZShzdG9waWVuLCBhKTsKICAgIGRvdWJsZSB3eW5payA9IGhvcm5lcihhLCBzdG9waWVuLCB4KTsKCiAgICAvLyB3eXBpc2FuaWUgd3luaWvDs3cKICAgIGNvdXQgPDwgInN0b3BpZW4gd2llbG9taWFudTogIiA8PCBzdG9waWVuIDw8IGVuZGw7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSBzdG9waWVuOyBpKyspCiAgICB7CiAgICAgICAgY291dCA8PCAiYSIgPDwgKHN0b3BpZW4gLSBpKSA8PCAiID0gIiA8PCBhW2ldIDw8IGVuZGw7CiAgICB9CiAgICBjb3V0IDw8ICJ4ID0gIiA8PCB4IDw8IGVuZGw7CiAgICBjb3V0IDw8ICJ3KCIgPDwgeCA8PCAiKSA9ICIgPDwgd3luaWsgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==