Iteracyjnie


//*************************************************************************//           PROGRAM OBLICZA WARTOSC WIELOMIANU 4 STOPNIA DLA ZADANEJ

//           WARTOSCI ARGUMENTU CZYLI DLA KONKRETNEGO X 

//               - w obliczeniach wykorzystuje schemat Hornera napisany ITERACYJNIE

//                 (jest tez rekurencyjny zapis)

//               - z pliku pobiera wartosci dla wspolczynnikow przy x, jest ich 4 moga byc zera,

//                 oraz wyraz wolny jako piaty

//               - te 5 danych wpisuje do tablicy jednowymiarowej

//               - pobiera tez wartosc x, dla ktorej obliczamy wartosc wielomianu

//*************************************************************************

 

 

// UWAGA  przypominam o sprawdzeniu pliku stopien_czwarty.txt i poprawnym go zapisaniu - kursor ustawic -zeby nie bylo pustego wiersza bo zle wyniki

 

 

#include<iostream>

#include<fstream>

 

using namespace std;

  

 int main()

 {

               

     int a[5];   // tablica do przechowywania wspolczynnikow wielomianu i wyrazu wolnego

                 // tablica jest piecioelementowa bo sa 4 wspolczynniki i 1 wyraz wolny

                 // pierwszy element to wspolczynnik przy najwyzszej potedze

                 // drugi element to wspolczynnik przy potedze o wykladniku 3 itd

                 // ostatni element to wyraz wolny

            

     int x;      //zmienna na wartosc argumentu, dla ktorego obliczam wartosc wielomianu

          

     

     ifstream odczyt("stopien_czwarty.txt"); 

     ofstream zapis("wynik_czwarty.txt");    

   

  while(!odczyt.eof())  

  {

                       

                    

    for (int i=0; i<5; i++)     // pobiera dane do tablicy a[5]

                                // te dane to wspolczynniki i wyraz wolny

    {

    odczyt>>a[i];

    }

 

   

    int wynik=a[0];   // deklaruje zmienna  -wynik - jest to zmienna, w ktorej poczatkowo

                                 // przechowuje wartosc wspolczynnika przy 4 potedze wielomianu

                                 // dlatego przypisalam jej a[0]

                                 // bo w tablicy a[5] na pierwszym miejscu jest ten wspolczynnik

                                 // potem wartosc tej zmiennej bedzie inna jak wg. schematu Hornera                                       bede dalej obliczac

 

// UWAGA  jesli wspolczynniki sa duze to nalezy zadeklarowac zmienna - wynik- jako float

                  

// PRZYKLAD:   W(x)= 2x^4+ 7x^3 - 9x^2 + x +6   ^ to symbol potegi 

                          // wspolczynniki: 2,7,-9,1   wyraz wolny 6

                          // zapisane wg schematu Hornera:  W(x)= x (x (x (2x +7) -9) +1) +6

                          // czyli dla tego przykladu zmienna wynik=2 ,

                          // potem sie zmienia jej wartosc jak bede mnozyc przez x oraz dodawac 

  

    

odczyt>>x;          // pobiera wartosc x

 

                  

for (int i=1; i<5; i++)            // tutaj obliczenia czyli caly Horner w dwoch linijkach

{

        wynik=wynik*x+a[i];   // rozpoczynam od srodkowego nawiasu

                                               // czyli w naszym przykladzie od  (2x+7)

}

 

zapis<<wynik<<endl;           // zapisuje do pliku wartosc wielomianu

 

  } 

     

     odczyt.close();

     zapis.close();

     return 0;

 }