![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 749 Pomógł: 37 Dołączył: 3.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Potrzebuje napisać skrypt który będzie rozwiązywał działania i będzie przedstawiał etapy jego rozwiązania, np. Podaje mu działanie: 6*4*(2/5+34-2*2)/2 a on wykonuje na nim operacje i zwraca mi takie coś: 6*4*(0,4+34-4)/2= =6*4*34,4/2= =24*34,4/2= =24*17,2= =417,6 Zdaję sobie z tego sprawę że to nie będzie proste zadanie, wiec prosze was o pomoc... Jak się za taki skrypt zabrać? Co proponujecie? Ten post edytował 1010 3.10.2006, 20:25:38 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 315 Pomógł: 1 Dołączył: 6.08.2003 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Hmm no to dalej jedziemy teorią, plan algorytmu:
0.Możemy potraktować wszystko jako string o ile php się nie uprze i tego za szybko nie wyliczy. 1.Szukamy wyrażenia ograniczenego nawiasami, uwzględniając wielkrotne nawiasy. Jeśli się udało, to w odnaleziony ciągu powtarzamy 1 pkt do czasu gdy nie będzi już wyrażeń w nawiasach. 2.Operujemy na otrzymanym ciągu wykoując dziłania wedle priorytetów(pierwiastek, mnożenie/dzielenie,dodawanie/odejmowanie), wyświetlając po każdym wykonanym priorytecie wynik działania, czyli jeśli mamy np.: (8*5*6) to od razu otrzymamy z tego 240. 2 pkt powtarzamy aż do czasu gdy zostnie nam z danego nawiasu tylko jedna liczba(wynik). Co do samego algorytmu to 1pkt regexpy, 2pkt regexpy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Można się też bawić w stosy, czyli tak jak to naprawde jest liczone, tyle że wtedy możemy stracić możliwość wypisywania pośrednich wyników działań, a przynajmniej będzie trudniej. Ten post edytował s_w_ir 3.10.2006, 22:03:37 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 11:11 |