maciek022
16.10.2004, 14:28:52
Mam zasadniczy problem. Potrzebuje napisać skrypt, który najpierw zapisuje do zmiennej działanie w formie tekstu (string), następnie wyświetla tą zmienna na ekranie i oblicza wartość wyrażenia zawartego w tej zmiennej. Wynik również wyświetlając.
W wyrażeniu chciałbym użyć również zmiennych, czyli ma ono postać np.:
Kod
//zakładamy że zmienne $x, $y, $z są przekazywane przez funkcje
$x^$z+floor($x*2+abs($y)/$x*$y*$z)
Gwoli formalności:
floor() - zaokrągla w dół,
abs() - zwraca moduł liczby.
Jak ma to wyglądać?
NuLL
17.10.2004, 00:52:40
Jak ktos lubi harkor mozna by se parser napisac...
Paul
17.10.2004, 02:54:00
Drobny parser by sie jednak przydal poniewaz tutaj jest nastepujace wyrazenie:
Cytat
$x^$z
Domyslam sie, ze chodzi o potegowanie, a taki operator w php to
sumowanie bitowe modulo 2 
. Tak wiec trzeba to zamienic na funkcje
pow" title="Zobacz w manualu PHP" target="_manual()
maciek022
17.10.2004, 13:13:26
Fakt. Trafna uwaga. Zamiast '^' powinno być 'pow()'. Ale to był kiepski przykład prawde mówiąc w porównaniu do tego co mam napisać.. Otóż chodzi mi o napisanie skryptu, który mógłby powtarzać jakieś działanie n razy (n podajemy jako parametr funkcji). Najprostszym przykładem takiego działania może być silnia:
n! = 1*2*3*4*5*6*....*(n-2)*(n-1)*n
W takim przypadku nie ma większego problemu. Natomiast problem zaczyna sie jeżeli w równanie wchodzą zmienne i nawiasy, np:
$zmienna=$c($a/$n*(pow($a, $n-2)+pow($b, $n-2))+$c($a/($n-2)*(pow($a, $n-4)+pow($b, $n-4))+ ........ +$c($a/6*(pow($a, 4)+pow($a, 4))+$c($a/4*(pow($a, 2)+pow($a, 2))))....))
Zauważmy, że nawiasy stawiane po każdym '$c' zamykamy dopiero na końcu równania.. Czyli każde następne wyrażenie mnożymy dodatkowo przez $c... Pierwsze mnożymy przez $c, drugie już przez $c*$c, itd, itp..
A jeżeli sobie jeszcze dodamy do tego na końcu równania pewną zmienna w zależności od tego, czy $n jest parzyste, czy nie...? Mimo wszystko sprawia to troche problemu, nie??