#include #include #include using namespace std; class Wielomian { public: void readFromFile(string filename) { string str; stopien = 0; fstream file(filename); if (!file) { cerr << "Nie udalo sie otworzyc pliku o nazwie: " << filename << "\n"; exit(EXIT_FAILURE); } while (getline(file, str)) { a.insert(a.begin(), stof(str)); stopien++; } file.close(); } void setX(float x) { this->x = x; } int getStopien() { return this->stopien; } void oblicz() { b.resize(stopien); for (int i = stopien - 1; i >= 0; i--) { if (i == stopien) { b[i] = a[i]; } else if (i > 0) { b[i] = a[i] + b[i + 1] * x; } else if (i == 0) { b[i] = a[i] + b[i + 1] * x; } } } float oblicz_rekurencyjnie(int n) { if (n == 0) { return a[0]; } return a[n] + x * oblicz_rekurencyjnie(n - 1); } void wyswietl_wynik() { for (int i = b.size() - 1; i >= 0; i--) { cout << "b" << i << ": " << b[i] << "\n"; } cout << "Rozwiazaniem wielomianu jest: " << b[0] << endl; } void reverse_a() { reverse(a.begin(), a.end()); } private: vector a; vector b; int stopien; float x; }; int main() { float x = 0; Wielomian wielomian; cout << "Program do obliczenia wielomianu schematem hornera\n"; cout << "Podaj x dla ktorego szukamy rozwiazania: "; cin >> x; wielomian.readFromFile("dane.txt"); wielomian.setX(x); wielomian.oblicz(); wielomian.wyswietl_wynik(); wielomian.reverse_a(); cout << "\nWynik rekurencyjny: " << wielomian.oblicz_rekurencyjnie(wielomian.getStopien() - 1) << endl; return 0; }