[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парни, помогите плиз. Пишу функцию с eval`ом
Vanzes2008
Здравствуйте!

Вся фишка состоит в php функции, которая считала бы некоторую математическую функцию от двух (трех) переменных.

Вот вывожу то, что получилось у меня, но не работает для отрицательных чисел 'x1', 'x2', и почему то запускается только один раз, при повторном вызове выходит ошибка в функции 'fotx'.

здесь wXX - элементы матрицы Якоби (для каждого своя формула, очень похожая)
случай матрицы 2x2


//получение данных
$f1s = c("edit_f1")->text;
$f2s = c("edit_f2")->text;
$x1s = c("edit_x01")->text;
$x2s = c("edit_x02")->text;
$hs = c("edit_h")->text;

$x1 = (double) $x1s;
$x2 = (double) $x2s;
$h = (double) $hs;
//проверка ввода
if($f1s and $f2s or $f2s==0 and $x01s or $x01s==0 and $x02s or $x02s==0 and $hs)
{
ShowForm(c("ras4et2x2n"), SW_SHOW);

// функция двух переменных считающая f от двух чисел
function fotx($x1,$x2,$fotxn)
{
$fotx1 = str_replace('x1',$x1,$fotxn);// заменяем в строке x1 на наше число
$fotx = str_replace('x2',$x2,$fotx1); // теперь x2
eval('$f = '.$fotx.';'); // присваеваем переменной f посчитанное значение фнкции
return $f; // ВОЗВРАЩАЕМ F
}

//Значения в Xo
$f1otx0 = fotx($x1,$x2,$f1s);
setText(c("ras4et2x2n->memo_f1x0"), $f1otx0);

$f2otx0 = fotx($x1,$x2,$f2s);
setText(c("ras4et2x2n->memo_f2x0"), $f2otx0);

// w11
$w11 = (fotx($x1+$h,$x2,$f1s) - fotx($x1-$h,$x2,$f1s))/(2*$h);
setText(c("ras4et2x2n->memo_w11"), $w11);

// w12
$w12 = (fotx($x1,$x2+$h,$f1s) - fotx($x1,$x2-$h,$f1s))/(2*$h);
setText(c("ras4et2x2n->memo_w12"), $w12);

// w21
$w21 = (fotx($x1+$h,$x2,$f2s) - fotx($x1-$h,$x2,$f2s))/(2*$h);
setText(c("ras4et2x2n->memo_w21"), $w21);
// w22
$w22 = (fotx($x1,$x2+$h,$f2s) - fotx($x1,$x2-$h,$f2s))/(2*$h);
setText(c("ras4et2x2n->memo_w22"), $w22);

}
else
MessageBox("Не все необходимые для рассчета данные введены!
Проверьте правильность заполнения формы!"
, "Не все поля заполнены");



Заранее благодарю!



Спустя 1 час, 38 минут, 47 секунд (19.12.2010 - 20:54) inpost написал(а):

 ! 

М
Нельзя в чат давать ссылки на свои темы
inpost

Спустя 10 минут, 18 секунд (19.12.2010 - 21:04) Vanzes2008 написал(а):
Прошу прощения, новенький

Спустя 35 минут, 1 секунда (19.12.2010 - 21:39) ИНСИ написал(а):
Цитата
На форуме: 1 месяц, 9 дней

нормально smile.gif а когда только регистрируешься - значит младенец??? smile.gif smile.gif

Спустя 28 минут, 14 секунд (19.12.2010 - 22:08) Vanzes2008 написал(а):
Ну сообщений та всего 4, и то тогда было 2, а после этого будет уже целых 5. Я понимаю, что правила надо при регистрации читать и все такое, но чет не было времени, сам всегда стараюсь правила соблюдать и не люблю тех, кто их нарушает. ))

Спустя 9 часов, 50 минут, 6 секунд (20.12.2010 - 07:58) twin написал(а):
Цитата
при повторном вызове выходит ошибка в функции 'fotx'.
Какая ошибка?

Спустя 1 час, 53 минуты, 24 секунды (20.12.2010 - 09:51) Vanzes2008 написал(а):
fatal error: cannot redeclare fotx()

Спустя 5 минут, 41 секунда (20.12.2010 - 09:57) Basili4 написал(а):
Vanzes2008
Там же написана попытка пере декларировать fotX т.е. два раза встречается определение ф-ции

Спустя 6 минут, 12 секунд (20.12.2010 - 10:03) Vanzes2008 написал(а):
а как тогда сделать чтоб она сразу декларировалась, а не моей кнопкой?
То есть получается что она должна один раз где та определиться и все, получается при запуске. А я могу только кнопки программировать. Сделать кнопку "декларировать функции" как то не вариант ))

Может есть какой другой выход? Может в php уже есть такая функция?

Спустя 1 час, 18 минут, 58 секунд (20.12.2010 - 11:22) twin написал(а):
Ккие еще кнопки в PHP? Функцию нужно определить один раз и не трогать больше. Только вызывать.

Спустя 5 часов, 3 минуты, 57 секунд (20.12.2010 - 16:26) Vanzes2008 написал(а):
Ладно, с этим разобрался. Почему отрицательные числа не считает?
например когда 'x1-x2' и x2=-2, получается такое выражение x1--2 и почему то не корректно считается, выдается синтаксическая ошибка в eval`e

Спустя 4 минуты, 38 секунд (20.12.2010 - 16:31) Vanzes2008 написал(а):
Я программу пишу, exe, там у меня кнопки, и я их на php программирую ))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.