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#

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 510x (50.06 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

  Aktivity (1)

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

 

 

Komentáře

Avatar
matesax
Redaktor
Avatar
matesax:

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ý:

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:

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:

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:

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:

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:

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:

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.