![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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, она нигде не используется. |
|
#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
|
||||
|
||||
|
Я вроде чётко поставил вопросы, хочу узнать чёткий ответ:
Цитата:
|
|
#5
|
||||
|
||||
|
А в принципе... вот вам ваш код и мучайте его как хотите.
|
|
#6
|
|||
|
|||
|
можно в принципе и без фннкции.
большое спасибо, продолжу мучать))) |