Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykonanie działania matematycznego
Forum PHP.pl > Forum > PHP
maciek022
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ć?questionmark.gif
rogrog
stare dobre eval" title="Zobacz w manualu PHP" target="_manual
NuLL
Jak ktos lubi harkor mozna by se parser napisac...
Paul
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 smile.gif. Tak wiec trzeba to zamienic na funkcje pow" title="Zobacz w manualu PHP" target="_manual()
maciek022
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??
rogrog
może rekurencja?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.