Diskuze: Machr na C# .NET - Grafy funkcí

C# .NET .NET (C# a Visual Basic) Machr na C# .NET - Grafy funkcí American English version English version

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Vítejte u další minisoutěže o placku Machr na C# .NET a samolepky. V jedné z minulých soutěží jsme tvořili parser matematických výrazů. Dnes na něj v podstatě navážeme a vy všichni (a že vás bylo) co jste parser zaslali a nezískali placku máte nyní šanci. Naprogramujte aplikaci, kde zadáme rovnici funkce (např: y = x2 *2) a aplikace nám vykreslí graf této funkce. Aplikace by měla umět běžné operátory + - * / a ideálně ještě sinus a kosinus. Můžete použít i jiný jazyk než C# (dostanete pak samozřejmě jinou placku).

Čas si dejme do neděle 11.8. do 15:00.

Editováno 5.8.2013 11:09
Odpovědět 5.8.2013 11:03
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na David Čápka
Ondrca:

Proc jsi radsi nedal webdesign? :(

Nahoru Odpovědět  -5 5.8.2013 11:21
Zase jsem o něco chytřejší
Avatar
Odpovídá na Ondrca
Michal Žůrek (misaz):

protože ne každému webdesign vyhovuje a musí se to prostřídat.

Nahoru Odpovědět 5.8.2013 11:26
Nesnáším {}, proto se jim vyhýbám.
Avatar
Michal Žůrek (misaz):

a už můžeme použít něco typu eval()?

Nahoru Odpovědět 5.8.2013 14:08
Nesnáším {}, proto se jim vyhýbám.
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 5.8.2013 14:42
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Michael Olšavský:

To se bude znovu hodnotit i parser? Moc se mi ho nechce upravovat :D dneska jsem půl dne hledal jiná řešení, ale nevím jak ten postfix popř prefix zpřehlednit...

 
Nahoru Odpovědět 5.8.2013 21:32
Avatar
vitamin
Člen
Avatar
vitamin:

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...).

Editováno 5.8.2013 22:38
 
Nahoru Odpovědět 5.8.2013 22:35
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michael Olšavský
David Čápka:

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.

Nahoru Odpovědět 6.8.2013 21:27
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
vitamin
Člen
Avatar
vitamin:

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#.

 
Nahoru Odpovědět 6.8.2013 21:51
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Zde jsem nezaznamenal dokonce žádný projekt, škoda, nebylo to těžké :)

Nahoru Odpovědět 11.8.2013 15:14
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Michal Žůrek (misaz):

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

Nahoru Odpovědět 11.8.2013 17:30
Nesnáším {}, proto se jim vyhýbám.
Avatar
vitamin
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
vitamin:

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
 
Nahoru Odpovědět 11.8.2013 22:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.