Diskuze: Machr na C# .NET - Grafy funkcí
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Vlastník

Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
protože ne každému webdesign vyhovuje a musí se to prostřídat.
a už můžeme použít něco typu eval()?
To se bude znovu hodnotit i parser? Moc se mi ho nechce upravovat dneska jsem půl dne hledal
jiná řešení, ale nevím jak ten postfix popř prefix zpřehlednit...
Riesit sa to da tak ze sa upravy predchadzajuce zadanie tak aby ako hodnotu
akceptoval lexer aj znaky/slova. treba upravyt aj parser ktory a umozni volanie
funkcii ( <WORD> '(' [EXPR [',' EXPR]* ] ')' ).
Miesto okamziteho vyhodnotenia sa ale vytvori AST(Abstraktny syntakticky strom).
Naslednie sa vyhodnotia vsetky uzly ktore niesu zavysle na ziadnej premennej (v
nasom pripade napr 'x'). Potom staci pre kazdu vzorku z osi X vyhodnotit strom.
Vysledok stromu budu suradnice na osi Y, Potom staci vykreslit graf cez daku
kniznicu. Miesto stromu sa da pouzit aj napr zasobnik (polská suffixová
forma...).
Vzhledem k účasti v minulé soutěži bych se teď nebál velké konkurence. Můžeš použít ten samý parser, stačí projet jednotlivé body a spočítat s ním výsledky, moc práce to předělat není. Samozřejmě pokud chceš mít jistotu, chtělo by to v parseru alespoň výjimky a přehlednější metody.
Parser neni problem, ten mam hotovy (zakladna aritmetika (realne +
celociselne premenne ), nativne funkcie, moznost tvorit vlastne funkcie, pedavat
funkciu ako parameter, reflexiu, UFCS a samozrejme lokalne a globalne premenne
)
Ja mam skor problem s grafom, mam len linux a GTK#.
Zde jsem nezaznamenal dokonce žádný projekt, škoda, nebylo to těžké
já jsem to dělal s evalem, ale nestihl, mám první verzi která je pomalá jak šnek (dobře, možná pomalejší) a není otestovaná. http://misaz.wz.cz/…afFunkci.zip
Miesto eval mozes pouzit toto: http://uloz.to/…d/parser-zip
syntax:
//vytvorenie funkcie:
fnc = (x) -> log(sin(x)+cos(x+4))
//je mozny aj format s bokou a vynehanymi zatvorkami:
fnc = x -> (x.sin + (x+4).cos).log
//funckia z viacerimi parametrami:
fnc = (x, y) -> sin(x) + cos(y) * log(x * y)
//tvorba konstant:
const = (3+4+7)
//boolean logic:
fnc (x) -> (x > 23) ? 1 : 0
//rekruzia:
fnc = (x) -> (x > 1) ? x + this(x-1) : 0
//pretypovanie:
to_int = x -> int(x)
to_real = x -> x.real
Zobrazeno 12 zpráv z 12.