Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2007, 00:41   #1
Skif
 
Регистрация: 08.04.2007
Сообщений: 9
По умолчанию метод золотого сечения выдает ошибку...

а в чем дело разобратся не смог, вроде все нормально...
всего 6 одинаковых ошибок, как я понял - не правильно обьявлены переменные, ошибки указал в каментах напротив строк на которые ссылается делфя:

procedure TForm1.Button2Click(Sender: TObject);

function F(x:Extended):Extended;
begin
F:=x*x*x-2*x*x+x-1;
end;

Var
a:Extended;
b:Extended;
r1:Extended;
r2:Extended;
E:Extended;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
E:=StrToFloat(Edit3.Text);
r1:=b-(b-a)*0.618;
r2:=a+(b-a)*0.618;
Begin
if Abs(b-a)>E then
begin
if F(r1)>F(r2) then
begin
a:=r1; {Value assigned to 'a' never used}
r1:=r2; {Value assigned to 'r1' never used}
r2:=a-(b-a)*0.618 {Value assigned to 'r2' never used}
end
else
begin
b:=r2; {Value assigned to 'b' never used}
r2:=r1; {Value assigned to 'r2' never used}
r1:=b-(b-a)*0.618 {Value assigned to 'r1' never used}
end;
end
else
begin
Edit4.Text:=FloatToStr(a);
Edit5.Text:=FloatToStr(b)
end;
End;
end;

end.
Skif вне форума Ответить с цитированием
Старый 08.04.2007, 01:11   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Откомпилировал, всё работает. значения в едит 4 и едит5 меняются.
Alar на форуме Ответить с цитированием
Старый 08.04.2007, 01:14   #3
Skif
 
Регистрация: 08.04.2007
Сообщений: 9
По умолчанию

да? а ошибки выдает, типа тех что я указал? а делфи какого года?
Skif вне форума Ответить с цитированием
Старый 08.04.2007, 01:23   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Сообщение от Skif Посмотреть сообщение
да? а ошибки выдает, типа тех что я указал? а делфи какого года?
Delphi 7, всё прекрасно работает. кинул 2 кнопки, 5 едитов, везде менял значение, чего-то считает
Alar на форуме Ответить с цитированием
Старый 08.04.2007, 01:30   #5
Skif
 
Регистрация: 08.04.2007
Сообщений: 9
По умолчанию

у меня тож 7-я делфя, мож глюк какой? ставлю а=0, б=2, Е=0,5 и не считает, но все меняется если Е=5...
Файл тож откомпилировал, без результатно...
Skif вне форума Ответить с цитированием
Старый 08.04.2007, 12:45   #6
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение

Цитата:
Value assigned to 'r2' never used
вобще то это но ошибка , а Warning - предупреждение.

у тебя идет двойное ветвление, и Editы меняются только в случае двойного перехода по веткам else ..

вообще алгоритм некорретно реализован. переменные r1 и r2 в любом случае нигде (дальше по коду) не используются, т.к. они локальные.

'вот записали мы в них значения, а зачем ?' - дословный перевод сообщения Delphi
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 09.04.2007, 01:09   #7
Skif
 
Регистрация: 08.04.2007
Сообщений: 9
По умолчанию

2 Virtson
прошу обратить внимание:
если б-а по модулю больше чем Е, то сравнивается Ф1 и Ф2 и в зависимости от того что из них больше и присваиваются значения переменным а и б и т.п.
иначе меняются Editы(однократный переход по else, в 1-вом ветвлении)

ты поясни почему все объявленные переменные работают после 1-го бегина, а в ветвлениях неработают, в чем неккоректность? уточни пожалуйста...
Skif вне форума Ответить с цитированием
Старый 09.04.2007, 07:23   #8
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение

Код:
a:=r1; {Value assigned to 'a' never used}
r1:=r2; {Value assigned to 'r1' never used}
r2:=a-(b-a)*0.618 {Value assigned to 'r2' never used}
end;
и
Код:
b:=r2; {Value assigned to 'b' never used}
r2:=r1; {Value assigned to 'r2' never used}
r1:=b-(b-a)*0.618 {Value assigned to 'r1' never used}
end;
именно присваешь и далее идет end - все строки помеченны Delphi не зря:

"Value assigned to 'a' never used" =
"значение, присвоенное переменной 'а' нигде больше не используется"..
я не знаю, как тут еще сказать

если сейчас тебя устраивает работа алгоритма, можешь выкинуть рассмотренные строки кода
Берегите друг друга!

Последний раз редактировалось Virtson; 09.04.2007 в 07:26.
Virtson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADOQuery - выдает ошибку kiber0net0 Общие вопросы Delphi 2 02.09.2008 19:49
Windows2003 ошибку выдает Cantana Windows 11 07.12.2007 06:04
при поиске по базе выдает ошибку - Пропущен оператор в выражении frai БД в Delphi 1 09.11.2007 23:01
MasterSource - выдает ошибку nataly_ukr БД в Delphi 10 12.10.2007 13:49
При активизации формы выдает ошибку Canadec Общие вопросы Delphi 11 04.09.2007 12:10