[Pascal] program liczący schematem hornera

ct985
Użytkownik
Użytkownik
Posty: 184
Rejestracja: 13 paź 2011, o 20:36
Płeć: Kobieta
Lokalizacja: Warszawa
Podziękował: 71 razy

[Pascal] program liczący schematem hornera

Post autor: ct985 »

Mam problem z programem liczącym wartość wielomianu schematem Hornera, nie wiem dlaczego nie działa? Czy mogę prosić o jakieś wskazówki?

Kod: Zaznacz cały

program horner;
uses crt;

var
        x:real;
        wartosc,wynik:real;

function horner(x:real):real;
var
        n,i:integer;
        w:real;

begin
        write('Podaj rzĄd wielomianu:  ');
        readln(n);
        wartosc:=0;
        writeln('Podaj warto˜† wspoˆczynnika x');
        readln(x);
        for i:=0 downto n do
        begin
                writeln('Podaj wsp˘ˆczynnik przy x^', i);
                readln(w);

                wartosc:=wartosc*X + w;
        end;
end;

begin

        wynik:=horner(x);

        writeln('Wartosc wielomianu w punkcie', x:0:3, 'wynosi', wynik:0:4);
        readln
end.
machina13
Użytkownik
Użytkownik
Posty: 73
Rejestracja: 12 kwie 2009, o 08:31
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 16 razy
Pomógł: 6 razy

[Pascal] program liczący schematem hornera

Post autor: machina13 »

masz
for i:=0 downto n do
Gdzie n to rząd wielomianu. Pętla w tej postaci ustawia i równe 0 i wykonuje swoje działanie zmniejszając i o 1 po każdym przejściu. Jednak n pewnie podajesz na plusie (ciężko o rząd wielomianu na minusie) więc podejrzewam że tu jest błąd. (w tej pętli 1 wartość jest zmniejszana aż osiągnie drugą wartość)
ct985
Użytkownik
Użytkownik
Posty: 184
Rejestracja: 13 paź 2011, o 20:36
Płeć: Kobieta
Lokalizacja: Warszawa
Podziękował: 71 razy

[Pascal] program liczący schematem hornera

Post autor: ct985 »

Faktycznie ten warunek w pętli był bez sensu, ale po zmianie nadaj nie działa. Czy mogę prosić o pomoc?

Kod: Zaznacz cały

program horner;
uses crt;

var
        x:real;
        wartosc,wynik:real;

function horner(x:real):real;
var
        n,i:integer;
        w:real;

begin
        write('Podaj rzĄd wielomianu:  ');
        readln(n);
        wartosc:=0;
        writeln('Podaj wartosc wspolczynnika x');
        readln(x);
        for i:=0 to n do
        begin
                writeln('Podaj wsplczynnik przy x^', i);
                readln(w);

                wartosc:=(wartosc*x) + w;
        end;
        horner:=wartosc;
end;

begin

        wynik:=horner(x);

        writeln('Wartosc wielomianu w punkcie ', x:0:3, ' wynosi ', wynik:0:4);
        readln
end.
adambak
Użytkownik
Użytkownik
Posty: 1272
Rejestracja: 8 sty 2011, o 18:18
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 295 razy
Pomógł: 115 razy

[Pascal] program liczący schematem hornera

Post autor: adambak »

kwestia trzech znaków, linijka:

Kod: Zaznacz cały

function horner(var x:real):real;
i gotowe..

-- 19 lut 2012, o 21:12 --

Kod: Zaznacz cały

writeln('Podaj wartosc wspolczynnika x');
średnio pasuje tutaj nazwa "współczynnik".. jest to przecież punkt w którym liczymy wartość wielomianu..
ODPOWIEDZ