![]() |
![]() |
![]() ![]()
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: 749 Pomógł: 37 Dołączył: 3.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tylko że ONP likwiduje wszystkie nawiasy i wszystko... To przy odwrotnej konwersji nie ma później problemu z ich odzyskaniem?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 219 Pomógł: 5 Dołączył: 18.07.2006 Skąd: Piekary Śląskie Ostrzeżenie: (0%) ![]() ![]() |
Tylko że ONP likwiduje wszystkie nawiasy i wszystko... To przy odwrotnej konwersji nie ma później problemu z ich odzyskaniem? Jak pomyślisz to nie ma. Pobierasz operator ze stosu i sprawdzasz czy następny operator na stosie ma wyższy czy niższy priorytet. Jak wyższy to poprzednie działąnie bierzesz w nawias. np: 4 2 3 + * 1. dajesz 4 na stos 2. dajesz 2 na stos 3. dajesz 3 na stos 4. dostajesz operator + 5. pobierasz 2 i 3 ze stosu i miedzy nie wsadzasz +. Dostajesz "2 + 3" 6. Pobierasz następny operator ze stosu. Jest nim *, który ma wyższy priorytet od + a więc "2 + 3" musisz wziąć w nawias. Otrzymujesz "(2 + 3)" i wsadzas tego stringa na stos zamiast "2 3 +" 7. Na stosie teraz masz 4 (2 + 3) 8. Pobierasz operator * i bierzesz ze stosu dwa jego argumenty czyli 4 oraz (2 + 3) i wsadzasz między nie operator. 9. Otrzymujesz 4 * (2 + 3). Na wejsciu nie ma już nic więc nie pakujesz tego w nawiasy. Mogą wystąpić inne "sytuacje", które teraz mi do głowy nie przyszły ale generalnie wszystko da się zrobić. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 08:55 |