![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте , мне нужно вычислить значение полинома n-ой степени
формула Ai*x^i (i - от 0 до n ) ; Получилось так , подскажите пожалуйста как исправить .. Код:
procedure TForm1.Button1Click(Sender: TObject); var x,n:integer; function fk(n,x:integer;a:array of integer):extended; begin if n=0 then fk:=a[n] else fk:=a[n]+ fk(a[n-1]*(round(Power(x,n+1)))) ;// как обойти несоответствие типов при возведении в степень ? end; begin x:=strtoint(edit1.text); a[n]:=strtoint(stringgrid1.Cells[n-1,0]; label1.caption:=floattostr(fk(n)); end; end. Последний раз редактировалось qpmr, 05.04.2012 в 23:09. |
#2
|
|||
|
|||
![]() какое несоответствие типов?
то, что в power отсылаются integer'ы, вместо вещественных? power спокойно работает с целыми числами (даже с типом byte). только что проверено лично. а вот функция у Вас вызывается странно. Из тела процедуры Вы ее вызываете с одним параметром, а описана она на трех. Динамический массив нельзя использовать без задания его длины через SetLength(a, <его_длина>); |
#3
|
|||
|
|||
![]() Цитата:
|
#4
|
||||
|
||||
![]() Имелось в виду то, что функция декларироана с 3-я параметрами:
Код:
function fk(n,x:integer;a:array of integer):extended; Код:
fk(a[n-1]*(round(Power(x,n+1)))); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
![]() Цитата:
Почему же с одним , там ведь задействованы 3 параметра ? Должна быть сумма ? |
#6
|
||||
|
||||
![]() Имеется ввиду
Код:
floattostr(fk(n)) |
#7
|
||||
|
||||
![]() И эта строка тоже. У ТС, везде вызов производится с одним параметром, но он упорно считает, что, если подставил в качестве параметра вычисление, то это автоматически засчитается как 3 параметра. Наивный, компилятор не настолько умён.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#8
|
|||
|
|||
![]() Цитата:
Код:
fk:=a[n]+ fk(a[n-1]*(round(Power(x,n+1))); |
#9
|
||||
|
||||
![]() Это уже черезчур. Считать до трёх умеешь? Где здесь передаётся 3!!! параметра?
Код:
fk := a[n] + fk(a[n -1] * (Rund(Power(x, n + 1))); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
|||
|
|||
![]() Цитата:
Код:
fk:=a[n]+ fk((a[n-1]*(Power(x,n+1))),x,a[n]) |
#11
|
||||
|
||||
![]() А рекурсия тут вообще к чему? У тебя формула
Цитата:
Последний раз редактировалось YVitaliy, 05.04.2012 в 23:20. |
#12
|
|||
|
|||
![]() Цитата:
|
#13
|
||||
|
||||
![]() Массив заполняется вначале в СтрингГрид? Тогда, я думаю, в поле
Цитата:
Последний раз редактировалось YVitaliy, 05.04.2012 в 23:20. |
#14
|
|||
|
|||
![]() Цитата:
Последний раз редактировалось qpmr, 05.04.2012 в 23:15. |
#15
|
||||
|
||||
![]() Код:
var x,n,i:integer; function fk(i,x:integer;a:array of integer):extended; begin if i>=length(a) then begin result:=0; exit; end; if i=0 then result:=a[0]+fk(i+1,x,a) else result:=a[i]*Power(x,i)+fk(i+1,x,a); end; begin x:=strtoint(edit1.text); setlength(a,stringgrid1.ColCount); for i:=0 to length(a)-1 do a[i]:=strtoint(stringgrid1.Cells[i,0]); label1.caption:=floattostr(fk(0,x,a)); end; end. ![]() |