Dodaj do ulubionych

[c++]Algorytm hornera

19.10.05, 18:06
Witam,
Jestem początkującym programistą i chciałbym prosić o pomoc w rozwiązaniu
następującego problemu. Mam napisać program który liczy wartość wielomianu dla
danego argumentu, interracyjną wersję napisałem bez problemu ale natrafiłem na
przeszkodę. Wynik jest zły lub program wyłącza się. Myślę że chodzi o
instrukcję warunkową w funkcji horner [...] if (i==n) [...]. Prosił bym o
sprawdzenie mojego kodu i wskazanie mi właściwej drogi do rozwiązania.
Kod znajduje się tutaj: members.lycos.co.uk/szopienice/main.txt

Z góry dziękuję za pomoc.

Pozdrawiam
Łukasz
Obserwuj wątek
    • alsor Re: [c++]Algorytm hornera 19.10.05, 20:00

      float horner(int i)
      {
      if(i>n) // chyba: i == n, bo większe nie może być
      {
      return a[i];
      }
      else // po co to else?
      {
      return a[i] + x*horner(i++); // i++ - zwiększa 'po użyciu', powinno być i+1
      }
      }

      Rekurencja, to kompletne nieporozumienie.

      Wersja 'normalna'
      wzory:
      b(0) = a0
      b(i) = ai + x*b(i-1), gdzie: i = 1..n, bn - wynik

      double horner(float a[], float x, int n)
      {
      double b = a[0];
      while( --n >= 0 ) b = x*b + *++a;
      return b;
      }
      • lukeh Re: [c++]Algorytm hornera 19.10.05, 21:56
        Dziękuję za pomoc.
        Chwilę przed przeczytaniem odpowiedzi sam zrozumiałem że powinienem użyć ++i
        zamias i++.
        Rekurencja nie jest nieporozumieniem ponieważ algorytm hornera (a raczej jego
        teoretyczna forma) w tej formie jest w moim programie nauczania i muszę opanować
        go przed maturą.

        Pozdrawiam

Nie masz jeszcze konta? Zarejestruj się


Nakarm Pajacyka