Parser a řešič matematických výrazů v C#

C# .NET Pro pokročilé Parser a řešič matematických výrazů v C#

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Ukázkový program pro parsování a následný výpočet výrazů, tedy celých příkladů v C# .NET se zdrojovým kódem ke stažení.


Galerie

Program byl vytvořen v roce 2012.

 

Stáhnout

Staženo 531x (50.06 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

 

Program pro vás napsal Michael Baitler
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Miniatura
Všechny články v sekci
C# - Pro pokročilé
Miniatura
Následující článek
Regulární výrazy v C# .NET
Aktivity (1)

 

 

Komentáře

Avatar
matesax
Redaktor
Avatar
matesax:3.10.2012 18:52

No na začátečníka je to dobrý výkon, ale jaksi to není ono... Ty nekonečné if else mi jsou asi největším trnem... Podívej se na Regex (regulérní výrazy) - tak jsem to řešil já...

Jo a začni programovat objektově - nemělo by to býti všehno splácané v jedné třídě a v jednom souboru... (Tedy rozděl to do tříd podle účelu daného kusu kódu.)

Místo class Hrana by tam mělo být struct Hrana.

Editováno 3.10.2012 18:55
 
Odpovědět  +1 3.10.2012 18:52
Avatar
Michael Olšavský:4.11.2012 18:20

Kód je velmi nepřehledný a místo neustálého if-else by šlo alespoň využít switch. Jak psal matesax, začni programovat objektově a piš komentáře.

 
Odpovědět 4.11.2012 18:20
Avatar
karel.cervicek4:29.11.2012 19:26

Chtěl jsem se zeptat, jeslti by jsi k tomu nemohl napsat popisky? Zajimá mě, jak jsi to psal a nekterym postupum tam nerozumím. Diky a pokud to nepujde tak to zkusim rozebrat a co nepochopim, tak se tady zeptam.
Dělam webove jazyky php a js. , ale project k maturitě musím mít v C# a chci to udelat na kv. funkce, dost mi pomuze princip jakym jsi to rozebiral a jak jsi vyřešil ten zasobnik.
Dik moc.

 
Odpovědět 29.11.2012 19:26
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na karel.cervicek4
David Čápka:29.11.2012 19:29

Kvadratická funkce má jasný předpis, pokud to nemáš zadané, nemusíš dělat takto složitý parser a můžeš si nechat zadat koeficienty a, b, c.

Odpovědět 29.11.2012 19:29
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
karel.cervicek4:29.11.2012 19:38

void Shunting() ...pro mně zcela nová věc, ten algoritmus vidim po prví.
Mam za sebou zaklady i OOP rozumim,ale říkám si jestli jsem si nedal velké sousto.Na druhou stranu bych chtel pokročit dál. Diky za odpověď...doufám, že neotravuju.

 
Odpovědět 29.11.2012 19:38
Avatar
karel.cervicek4:29.11.2012 19:40

Vim ,ale rad bych to pochopil a taky bych ji chtěl zkusit rozebrat celou v tom programu ..na vykreslení grafu

 
Odpovědět 29.11.2012 19:40
Avatar
Administrator:20.7.2013 14:08

Pro zamyšlení dávám k dobru trochu jiný přístup (v té nejjednodušší podobě):

static void Main( string[] args )
{
        string code = "public class TempClass { public double Calculate() { return " + args[0] + "; } }";

        using( var compiler = new CSharpCodeProvider() )
        {
                var res = compiler.CompileAssemblyFromSource( new CompilerParameters()
                {
                        GenerateInMemory = true
                }, code );

                var type = res.CompiledAssembly.GetType( "TempClass" );

                var obj = Activator.CreateInstance( type );

                var output = type.GetMethod( "Calculate" ).Invoke( obj, new object[] { } );

                Console.WriteLine( output );
        }
}
 
Odpovědět 20.7.2013 14:08
Avatar
Kit
Redaktor
Avatar
Odpovídá na Administrator
Kit:20.7.2013 14:20

Lidi, mějte rozum, nepište tak dlouhé řádky u programů. Kdo to má furt rolovat?

Odpovědět  ±0 20.7.2013 14:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 8 zpráv z 8.