|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
решение уравнений методом фибоначчи
необходимо создать программу вычислений корня уравнения методом фибоначчи.
Траблы: 1) организация интерфейса, кнопок, ввод данных,вывода результата .. Паскаль знаю, а с delphi не разобралась пока... 2) не обращается к функции Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private function fib (n:integer):real; Function func (x:real):real; { Private declarations } public { Public declarations } end; var Form1: TForm1; const max_fib=1476; var a, b, x, x1, x2, c, y1, y2, func : real; n:integer; {fib: real;} fibValues : Array [0..max_fib] of real; implementation {$R *.dfm} { TForm1 } Function TForm1.fib(n:integer):real; begin if (n=1) or (n=0)then result:=1 else result := fib(n-1) + fib(n-2); fibValues [n]:= result; end; Function TForm1.func(x:real):real; begin func:=7*x*x-20*x+25; end; begin writeln ('a= '); readln (a); writeln ('b= '); readln (b); writeln ('n= '); readln (n); while n>= 0 do begin x1:= a +(b-a)* fibValues [(n-2)]/ fibValues [n]; x2:= a +(b-a)* fibValues [(n-1)]/ fibValues [n]; c:=(x1+x2)/2; y1:= func(a); y2:= func(c); n:=n-1; if y1*y2<0 then a:=x1 else b:=x2; end; writeln(otvet= ', c:4:5) end. Последний раз редактировалось lmikle, 18.07.2011 в 23:58. |
#2
|
||||
|
||||
Для начала ответьте на несколько вопросов.
1. fibValues : Array [0..max_fib] of real; и fibValues [(n-2)] как это согласовать? Может происходить выход за пределы диапазона. 2. Как известно в Дельфи все глобальные переменные инициализируются 0, как это будет работать? fibValues [(n-2)]/ fibValues [n]; идёт деление на 0. 3. Для чего функция fib, она нигде не используется. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
1. fibValues : Array [0..max_fib] of real; и fibValues [(n-2)] как это согласовать? Может происходить выход за пределы диапазона.
все значения чисел фибоначчи будут заноситься в массив, и использоваться непосредственно оттуда, поскольку для расчета сперва нужны последние члены, и только потом первые. Таким образом, мы введем n и при расчете fibValues [(n-2)], fibValues [(n-1)], ibValues [n] необходимых для первого цикла сразу получим всю последовательность необходимых значений. 2. Как известно в Дельфи все глобальные переменные инициализируются 0, как это будет работать? fibValues [(n-2)]/ fibValues [n]; идёт деление на 0. if (n=1) or (n=0)then result:=1 fibValues [n]:= result; 0-й и 1-й член последовательности равны 1. 3. Для чего функция fib, она нигде не используется. функция необходима для заполнения элементов массива. Проблемы у меня с вводом-выводом данных (надо создать edit блоки и наверно что-то еще,но я не могу разобраться как правильно на них ссылаться), и еще на функцию func ругается при компиляции Последний раз редактировалось avelina, 18.07.2011 в 23:27. |
#4
|
||||
|
||||
Я вроде чётко поставил вопросы, хочу узнать чёткий ответ:
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
||||
|
||||
А в принципе... вот вам ваш код и мучайте его как хотите.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
|||
|
|||
можно в принципе и без фннкции.
большое спасибо, продолжу мучать))) |