![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 4 Dołączył: 7.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. To są operacje arytmetyczne, nie logiczne.
2. Będziesz musiał zaprząc do tego albo jakiś parser/kompilator wyrażeń matematycznych albo mając na uwadze wszystkie potencjalne luki bezpieczeństwa skorzystać z evala by zadanie to zrzucić na parser PHP. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 4 Dołączył: 7.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
na początku bardzo dziękuje za odpowiedź, jeżeli chodzi o bezpieczeństwo itp to jest to nie istotne. Może napisze co mam i co chce osiągnąć... mam tablice o zawartości:
całość sprowadziłem do stringu i usunałem separatory. Chciałbym aby teraz to co jest w stringu było działaniem... Ogółem kod mam napisać w innym języku programowania AS 3.0 ale php jest dla mnie bardziej zrozumiałem i później będę w stanie na podstawie manuala itp zrobic to dla AS 3.0 ![]() Może da się to też inaczej ugryźć zamiast podawać do tablicy tablica.push("6"); to może tablica.push(6); chyba wtedy wartość będzie liczbą a nie stringiem? niestety to nie działa w przypadku operatorów czyli tablica.push("+"); Ten post edytował d4ng 23.01.2014, 23:45:14 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 75 Dołączył: 5.06.2012 Skąd: Lębork Ostrzeżenie: (0%) ![]() ![]() |
Tak na szybkiego gdybyś nie mógł skorzystać z odpowiednika eval... dokończ sobie i rozpatrz przypadek liczb dwucyfrowych
![]()
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 56 Dołączył: 3.06.2010 Skąd: Tarnowskie Góry Ostrzeżenie: (0%) ![]() ![]() |
Zapomiałeś o jednym szczególe, mianowicie kolejności wykonywania działań. Autor wspominał również o mnożeniu.
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 4 Dołączył: 7.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
wydaje mi się że zadanie jest w dosyć prosty sposób trudne... do tablizy można wprowadzić cyfry od 0-9 i podstawowe operatory + , - , / , x oraz np kropkę która ma tworzyć z dwóch elementów tablicy liczbę dziesiętną np 0 , . , 9 czyli 0.9 bądź 2 , . , 8 czyli 2.8 Ogółem to rodzaj kalkulatora z użyciem tablicy... Jeżeli macie inny pomysł na napisanie takiego kalkulatora w oparciu o tablice (wymóg) to jestem otwary, niniejszy pomysł na rozwiązanie jest mojego autorstwa i nie musi być dobry...
|
|
|
![]()
Post
#8
|
|
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 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Nawet, jeżeli nie jesteś zainteresowany usługami IT ani outsourcingiem, a Twoją pasją jest programowanie - zobacz naszą stronę. Piszemy dużo fajnych use-caseów, jak podchodzimy do tematu programowania dla naszych klientów. A tak na co dzień tworzymy budujemy mvp oraz tworzymy platformę b2b.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
chyba jedynym sensownym rozwiązaniem jest użycie http://pl.wikipedia.org/wiki/Odwrotna_notacja_polska
http://edu.i-lo.tarnow.pl/inf/utils/010_2010/0410.php |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 4 Dołączył: 7.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ciekawe rozwiązanie ale czuję że nie bardzo mi się sprawdzi ponieważ z ciągu np 3, 4, 5, +, 6, -, 3 wyłapuje liczby i znaki jeżeli natrafi na znak to pobiera ze stosu 2 ostatnie cyfry i wykonuje na nich operacje z wykrytym znakiem... A mój skrypt będzie musiał działac troche inaczej...
to ma być klasyczny kalkulator, który pracuje na wprowadzonych wartościach. Jeżeli ktoś ma na to jakis pomysł to będe bardzo wdzieczny ![]() Ten post edytował d4ng 25.01.2014, 16:41:43 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
no to musisz zamieniać te pobrane wartości zgodnie z zasadza ONP
![]() Cytat pobiera ze stosu 2 ostatnie cyfry Nie może tak być bo jak podam 1,2,3,+,6,7,5,4,-,3 to Ci tak nie zadziała.. Ten post edytował com 25.01.2014, 16:43:47 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 4 Dołączył: 7.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
hmm a jak moge zrobic taki licznik:
mam string
poza tym jak dopisywać a nie dodawać cyfry tak żaby były liczną a nie stringiem.. :/ Myśle że taki licznik będzie bardzo bliski kalkulatora, bo np. jezeli zrobimy działanie 2 +2 + 2 to na wyświetlaczu zobaczym kolejno 2 + 2 i jak klikniemy znowu + to pokaże nam 4 czyli wynik z poprzedniego działania Ps. Com postaram się jakoś wgryźć w to ONP zakładam że na jego podstawie pisze sie 99% kalkulatorów? ![]() Ten post edytował d4ng 25.01.2014, 17:01:49 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
ONP to jest tylko sposób zapisu żeby nie trzeba było stosować () itd bo dzięki niemu zachowana jest kolejność wykonywania działa, a to jak to zaimplementujesz dalej to już zależy od Ciebie
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 21:53 |