#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]; // najwyższy współczynnik
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); // miejsce na wszystkie współczynniki
cout << "Podaj wspolczynniki od a" << stopien << " do a0:" << endl;
for (int i = 0; i <= stopien; i++)
{
cout << "a" << (stopien - i) << " = ";
cin >> a[i]; // a[0] = a3, a[1] = a2, ..., a[stopien] = a0
}
}
int main()
{
int stopien;
vector<double> a;
double x = 3; // punkt, w którym liczymy wartość
// wczytanie danych
wczytajDane(stopien, a);
// obliczenie wartości wielomianu schematem Hornera
double wynik = horner(a, stopien, x);
// wypisanie wyników w tym samym formacie co wcześniej
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmtjamEgb2JsaWN6YWrEhWNhIHdhcnRvxZvEhyB3aWVsb21pYW51IHNjaGVtYXRlbSBIb3JuZXJhCmRvdWJsZSBob3JuZXIoY29uc3QgdmVjdG9yPGRvdWJsZT4mIGEsIGludCBzdG9waWVuLCBkb3VibGUgeCkKewogICAgZG91YmxlIHd5bmlrID0gYVswXTsgLy8gbmFqd3nFvHN6eSB3c3DDs8WCY3p5bm5pawogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gc3RvcGllbjsgaSsrKQogICAgewogICAgICAgIHd5bmlrID0gd3luaWsgKiB4ICsgYVtpXTsKICAgIH0KICAgIHJldHVybiB3eW5pazsKfQoKLy8gRnVua2NqYSB3Y3p5dHVqxIVjYSBzdG9waWXFhCB3aWVsb21pYW51IGkgd3Nww7PFgmN6eW5uaWtpCnZvaWQgd2N6eXRhakRhbmUoaW50ICZzdG9waWVuLCB2ZWN0b3I8ZG91YmxlPiAmYSkKewogICAgY291dCA8PCAiUG9kYWogc3RvcGllbiB3aWVsb21pYW51OiAiOwogICAgY2luID4+IHN0b3BpZW47CgogICAgYS5yZXNpemUoc3RvcGllbiArIDEpOyAvLyBtaWVqc2NlIG5hIHdzenlzdGtpZSB3c3DDs8WCY3p5bm5pa2kKCiAgICBjb3V0IDw8ICJQb2RhaiB3c3BvbGN6eW5uaWtpIG9kIGEiIDw8IHN0b3BpZW4gPDwgIiBkbyBhMDoiIDw8IGVuZGw7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSBzdG9waWVuOyBpKyspCiAgICB7CiAgICAgICAgY291dCA8PCAiYSIgPDwgKHN0b3BpZW4gLSBpKSA8PCAiID0gIjsKICAgICAgICBjaW4gPj4gYVtpXTsgLy8gYVswXSA9IGEzLCBhWzFdID0gYTIsIC4uLiwgYVtzdG9waWVuXSA9IGEwCiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW50IHN0b3BpZW47CiAgICB2ZWN0b3I8ZG91YmxlPiBhOwogICAgZG91YmxlIHggPSAzOyAvLyBwdW5rdCwgdyBrdMOzcnltIGxpY3p5bXkgd2FydG/Fm8SHCgogICAgLy8gd2N6eXRhbmllIGRhbnljaAogICAgd2N6eXRhakRhbmUoc3RvcGllbiwgYSk7CgogICAgLy8gb2JsaWN6ZW5pZSB3YXJ0b8WbY2kgd2llbG9taWFudSBzY2hlbWF0ZW0gSG9ybmVyYQogICAgZG91YmxlIHd5bmlrID0gaG9ybmVyKGEsIHN0b3BpZW4sIHgpOwoKICAgIC8vIHd5cGlzYW5pZSB3eW5pa8OzdyB3IHR5bSBzYW15bSBmb3JtYWNpZSBjbyB3Y3plxZtuaWVqCiAgICBjb3V0IDw8ICJzdG9waWVuIHdpZWxvbWlhbnU6ICIgPDwgc3RvcGllbiA8PCBlbmRsOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gc3RvcGllbjsgaSsrKQogICAgewogICAgICAgIGNvdXQgPDwgImEiIDw8IChzdG9waWVuIC0gaSkgPDwgIiA9ICIgPDwgYVtpXSA8PCBlbmRsOwogICAgfQogICAgY291dCA8PCAieCA9ICIgPDwgeCA8PCBlbmRsOwogICAgY291dCA8PCAidygiIDw8IHggPDwgIikgPSAiIDw8IHd5bmlrIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=