![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 4 Dołączył: 7.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 717 Pomógł: 120 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
albo nieelegancki (ale prosty w zakodzeniu) eval, albo robisz sobie drzewko operacji, a potem przechodzisz przez to drzewko.
http://pl.wikipedia.org/wiki/Drzewo_(informatyka) Kiedyś dla jaj zrobiłem kalkulator w Pythonie, to zrobiłem to w ten sposób, że każdy węzeł mógł być albo liczbą, albo znakiem operacji (np. plusem, minusem). Jeśli węzeł był plusem/minusem etc. to miał dwoje dzieci. Np. 2 + 4 * 6 rozpisywałem na: Kod + (plus) / \ / \ 2 * (razy) / \ / \ 4 6 i potem przechodząc przez drzewo ( http://pl.wikipedia.org/wiki/Przechodzenie_drzewa ) ewaluowałem kolejne elementy, sprawdzając jaki jest symbol operacji w rodzicu (np. razy) i jakie są operandy (4 oraz 6), potem zliczałem i podmieniałem (zamiast węzła "razy" wsadzałem w drzewo wynik cząstkowy "24"), miałem coraz prostsze drzewo, a na końcu całe drzewo zostało bez gałęzi, zostawał sam wynik. Coś takiego mi się udało wtedy wymyśleć, możliwe że można to też inaczej zrobić od strony algorytmu. Ten post edytował PrinceOfPersia 24.01.2014, 16:03:36 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 13:01 |