ďťż

Ładny brzuch

Hej!
Mam do napisania coś okropnego:P Program który liczy miejsca zerowe funkcji, nie było by to nic, gdyby nie to, że funkcja nie ma być w postci wielomianu, czy czegoś z góry ustalonego, ale wpisywana przez usera jako zwykły string, czyli może być w postaci sinx+ln(2+1/x)^x..... Potrzebuje wiedzieć, czy ktoś kiedyś wpadł już na pomysl, jak to miło zrobić. Ja zacząłem od wstawienia zamiast x liczby[algorytm wyszukiwania miejsc zerowowych podstawia wszystkie możliwe x i liczy gdzie zmienai sie y z dodatniego na ujemny], pozbycia sie nawiasów, a gdy już ich nie będe miał, wyliczenia y. Gdy juz nie mam nawiasów, wyszukuje znak po znaku znaków działań (+;-;^;*), szukam znak po znaku liczby przed i po, zamienam na int, no i licze. Nie wiem czy nie robie tego zbyt na opak, chiałbym sie też pozbyć ciągłego pozbywania sie nawiasów, można to zrobić raz, ale została by zmnienna X, która potem zamieniał bym na jakąś cyfre przed obliczeniami, ale sam nie wiem jak to zrobić, i szukam nadziej w tym, że jest jakiś genialniejszy pomysł, ewentualnie jakaś miła biblioteka...

P.S -> Kolejność wykonywania działań ma być zachowana, stąd te nawiasy.



Nie znam rozwiązania takiego problemu :]
Jesli na chama to binarnie szukaj - bedzie szybciej :] na wszelki wypadek powiem o co chodzi
np znalazles ze F(0) < 0 a F(100) > 0
To teraz spr F(50) jest <0 to teraz szukasz z zakresu (50; 100) czyli sprawdzasz 75 itd jest to duzo wydajniejsze niz

Poszukaj na wikipedii, czy gdzie indziej o odwrotnej notacji polskiej.

Teraz wystarczy stringa skonwertować do tej notacji, wykonać działania i tyle :P

Artykuł na ten temat (swego czasu bardzo mi pomógł):
http://4programmers....lska_w_praktyce

Poza tym robiłem kiedyś kalkulator pod konsole, tylko że nie działał on w formie RPN, było to raczej zwykłe zapętlanie...
Tylko nie wiem gdzie to teraz mam :/ (po kilku formatach :P)



Ach te linki na 4p...

http://4programmers....lska_w_praktyce
lub
http://66.249.93.104...pl&ct=clnk&cd=1

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •