Autor Zpráva
radeson
Profil
prominte ze pisu na diskuzi takovou blbost :D ale potrebuju s timhl pomoct:

 $sOperator='+'; // nebo jine, zalezi na vyberu - dynamicke
    $vysledek = $iHodnota1.$sOperator.$iHodnota2;


problem je ze kdyz vypisu $vysledek tak mi to treba napise 50+60 misto 110, takhle to napsat nemuzu : $vysledek = $iHodnota1+$iHodnota2 protoze znamenko neni predem zname
Alphard
Profil
eval("$vysledek = $iHodnota1.$sOperator.$iHodnota2;");
ale jestli ty proměnné bereš z formuláře, máš v aplikaci velkou díru
Timy
Profil
Tohle je spíš doména funkcionálních jazyků než procedurálních, takže jestli chceš opravdu programovat tímto způsobem, koukni na LISP. Tam můžeš jako argument funkce předat třeba jinou funkci nebo operátor a dál s tím pracovat.

//edit: Ok, zapomněl jsem na eval. Ale stejně je to prasárna.
radeson
Profil
jj, zkousel jsem si jen tak naprogramovat kalkulacku, ale radeji teda zvolim jine reseni
Timy
Profil
Můžeš zkusit ten LISP ;-).
Timy
Profil
Teda LISP neznám, učíme se ve Schemu, ale je to hodně podobné. Když už budeš mít vypreparovaná ta čísla a operaci, stačí aplikovat tenhle kód:

(define kalkulacka
  (lambda(operace cisla)
    (apply operace cisla)))


A máš výsledek ;o).

Pár příkladů použití (i když vím, že to stejně nevyužiješ ;o)):

(kalkulacka + '(1 2 3 4 5))
> 15
(kalkulacka expt '(2 4))
> 16
(kalkulacka na2 '(5))
> 25
(kalkulacka < '(4 8))
> #t
(kalkulacka * '(2 3 5))
> 30
radeson
Profil
jj, vis co mi ale vrta porad hlavou, kdyz znas ten jazyk, mas nakej script tak kam ho ulozit aby se ti ta aplikace pak zobrazila?
Timy
Profil
To nevím, to jsme ještě nebrali. Co vím, tak to lze propojit s programem v céčku. Ale jestli se tím chceš hlouběji zabývat, můžu doporučit literaturu. Ale asi se ti ten jazyk nebude moc líbit…
radeson
Profil
nn dobry, ja se na to jen podival, urcite to je uzitecny ale ja nejdriv musim zvladat PHP, jinak dik ;-)
Sventek
Profil
Pokud používáš čtyři základní operátory, neměl by být problém rozdělit to switchem na několik případů a operátor tam vložit napevno ...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0