Wylliczanie wzoru podanego przez użytkownika

0

Witam,
Jestem dosc poczatkujacy jesli chodzi o programowanie w Delphi i z tad wynika moj problem. Mianowicie potrzebuje by program byl w stanie zinterpretowac wzor matematyczny(wliczajac w to warunek(if) oraz minimum) podawany przez uzytkownika. Wiem, ze w Clipper'ze byla funkcja "&()" (ampersand) dzieki ktorej bylem w stanie cos takiego wykombinowac :-) Czy jest cos takiego w Delphi 2005?? [???]

0

w gotowcach masz kod

0

hmmm... przejzalem jeszcze raz gotowce i nic takiego niewidze :/ moglbys mi podac linka?

0

heh... widze ze niezrozumiales o co pytalem... wiem co to kalkulator :-) i wiem jak go napisac, ale mi nie chodzi o napisanie kalkulatora tylko o dotarcie do funkcji ktora to policzy. A w tym wszystkim najwazniejsze, by tak jak ampersand funkcja ta interpretowala warunek if oraz min i max...

0

rozumiem, że chodzi Ci o coś takiego

wynik := NieznanaISzukanaPrzezCiebieFunkcja('2+3-5*(2+4)');

i w zmiennej wynik będziesz miał 35. Oprócz podstawowych działań chcesz jeszcze if. Jeśli dobrzę to rozumiem to Kalkulator_bez_ONP czy Prosty_kalkulator jest jak najbardziej tym, czego szukasz tylko trzeba if dodać

0

wiesz.... teoretycznie tak... ale sam ten "prosty kalkulator" jest troche zlozony a jak jeszcze do tego dorzuce if, min, max to sie z tego cos bardzo nieprzyjemnego zrobi :| a zlozonosc programu rosnie :/ Tak poza tym to nie lubie wywarzac otwartych drzwi i dlatego szukam gotowej funkcji, albo bibliotek w ktorych moge ja znaleŹĆ [green]

0

gotowych w sensie wbudowanych w delphi nie ma
co do bibliotek to w JEDI jest ale nie wiem czy ma max, min i if i chyba w RXach też był kiedyś (tyle, że chyba RXy wchłonąłeo JEDI)

0
el_wodzu napisał(a)

poza tym to nie lubie wywarzac otwartych drzwi i dlatego szukam gotowej funkcji, albo bibliotek w ktorych moge ja znaleŹĆ

Sugeruję zacząć lubić to wyważanie, bo nigdy wszystkiego nie znajdziesz, zresztą czasem trzeba napisać po swojemu. A idąc Twoim tokiem myślenia można powiedzieć, że wszystko, co było do napisania, zostało napisane - pozostaje posklejać to w całość.

Misiekd napisał(a)

tyle, że chyba RXy wchłonąłeo JEDI

Też mi się tak wydaje :)

0

Nieno az tak w skrajnosci niepopadam :-) ale zawsze mozna poszukac szczypty wiedzy u bardziej doswiadczonych [green]

Dzieki za podpowiedz z biblioteka :)

0

Sam nie dawno potrzebowałem coś takiego, i zrobiłem to w taki sposób.
Mamy wielomian W(x) i chcemy policzyc jego wartość dla x.
W(x) przedstawia sie zworem: W(x)=A.n * Xn + A.(n-1) * X(n-1) + A.(n-2) * X^(n-2) +...+ A.1 * X + A.0 . Deklarujemy zmienną tablicową, w: array of real, wtedy niech wartosci tej zmiennej to wspolczynniki A.m, a jej indeks to potega, czyli m. Wtedy: w[potega]=a.m.

Function Potega(liczba:real;wykladnik:byte):real
var
  licznik   : byte;
  wartosc : real;
Begin
  if liczba=0 then 
  begin
     result:=0;
     exit;
  end;
  if wykladnik=0 then
  begin
     result:=1;
     exit;
  end;
  if wykladnik<0 then
    exit;

  wartosc:=1;
  For licznik:=wykladnik downto 1 do  {chyba jeden, nie wiem bo pisze z glowy}
     wartosc:=wartosc*liczba;

  result:=wartosc;
End;

Function ObliczWartosc(w:array of real;w_st:byte;argument:real):real;
var
   i         : integer;
   wartosc   : real;
Begin
   wartosc:=0;
   For i:=w_st downto 0 do
      wartosc:=wartosc+w[i]*potega(argument,i);
   
   Result:=wartosc;
End;

To chyba tyle... Potęgę można zastąpić wzorem rekurencyjnym, ale go nie lubie :)

</delphi>
0

witam, mam pytanie czy ktos wie jak napisac ten program w pascalu żeby obliczal ln, arccin itp i
od czego to w ogóle zacząc pisać
prosze o jakeis wskazówki

0

a kolega czytać umie, wie co to link i do czego służy :>

1 użytkowników online, w tym zalogowanych: 0, gości: 1