Forum » Programiranje » [C#] izračun enačbe
[C#] izračun enačbe
zigi ::
imam 9 labelov, v lihe lable uporabnik vnese številke, v sode pa znake.
Recimo: 7 + 10 * 9 + 6 - 10 / 6
Kako to enačbo izračunati?
Recimo: 7 + 10 * 9 + 6 - 10 / 6
Kako to enačbo izračunati?
jeti51 ::
Iz enačbe zgradi drevo... v korenu posameznega (pod)drevesa je operator, njegova dva sinova sta pa operanda. In potem rekurzivno računaš vrednost drevesa.
private double Calculate(TreeRoot) {
double leftValue = Calculate(TreeRoot.LeftSubtree);
double rightValue = Calculate(TreeRoot.RighSubtree);
return Evaluate(leftValue, rightValue, TreeRoot.operation);
}
(Funkcija Evaluate iz podanih dveh vrednosti ter podane operacije izračuna in vrne vrednost tega izraza.)
V tem smislu nekako...
private double Calculate(TreeRoot) {
double leftValue = Calculate(TreeRoot.LeftSubtree);
double rightValue = Calculate(TreeRoot.RighSubtree);
return Evaluate(leftValue, rightValue, TreeRoot.operation);
}
(Funkcija Evaluate iz podanih dveh vrednosti ter podane operacije izračuna in vrne vrednost tega izraza.)
V tem smislu nekako...
jeti51 ::
Še to, če funkcija Calculate prejme kot argument vozlišče, ki je list drevesa (nima sinov), potem vrneš kar vrednost tega lista, sicer pa poračunaš vrednost poddrevesa, kot je nakazano zgoraj.
zigi ::
Hvala Jeti.
Če prav razumem mora biti v korenu drevesa operator ki veže najšibkeje. Se ti da napisati psevdokodo za zgeneriranje drevesa? :)
Drugače pa se mi tud to zdi obetavno: An Eval Function for C# using JScript.NET (JavaScript)
Če prav razumem mora biti v korenu drevesa operator ki veže najšibkeje. Se ti da napisati psevdokodo za zgeneriranje drevesa? :)
Drugače pa se mi tud to zdi obetavno: An Eval Function for C# using JScript.NET (JavaScript)
MaCoFaCo ::
Tisti primer zgoraj, ko dinamično kompajlaš expression, se mi zdi rahlo overkill...
Drugače pa imaš še tukaj eno implementirano rešitev.
Najbolj pa boš odnesu od vsega skupi, če sam implementiraš rešitev po jetijevem receptu.
Drugače pa imaš še tukaj eno implementirano rešitev.
Najbolj pa boš odnesu od vsega skupi, če sam implementiraš rešitev po jetijevem receptu.
zigi ::
z drevesi se nisem ubadal :), pač pa sem implementiral kar tisto rešitev, ki je na mojem linku.
Imam pa naslednji problem:
Aplikacija je ASP.NET Web Application. Ko se zažene, se določene stvari inicializirajo. Imam nekaj hastablov, ki se napolnijo. Včasih mi aplikacija normalno dela, včasih pa mi javi napako, da je hastable že napolnjen. Torej nekatere spremenljivke/hashtable ohrani podatke še od prejšnjega zagona aplikacije. A obstaja kakšna koda da bi se ob zagonu aplikacije celoten projekt resetiral, oz. da bi se vse spremenljivke izpraznile?
Javi mi pa to napako: Item has already been added. Key in dictionary: "1" Key being added: "1"
pri kodi: hModri.Add(1,1);
hModri je hashtable.
Tudi če se nekdo od zunaj poveže na mojo stran, se mu pokaže ista napaka. Če pa računalnik ponovno zaženem in se potem kdo poveže, pa aplikacija normalno deluje.
Imam pa naslednji problem:
Aplikacija je ASP.NET Web Application. Ko se zažene, se določene stvari inicializirajo. Imam nekaj hastablov, ki se napolnijo. Včasih mi aplikacija normalno dela, včasih pa mi javi napako, da je hastable že napolnjen. Torej nekatere spremenljivke/hashtable ohrani podatke še od prejšnjega zagona aplikacije. A obstaja kakšna koda da bi se ob zagonu aplikacije celoten projekt resetiral, oz. da bi se vse spremenljivke izpraznile?
Javi mi pa to napako: Item has already been added. Key in dictionary: "1" Key being added: "1"
pri kodi: hModri.Add(1,1);
hModri je hashtable.
Tudi če se nekdo od zunaj poveže na mojo stran, se mu pokaže ista napaka. Če pa računalnik ponovno zaženem in se potem kdo poveže, pa aplikacija normalno deluje.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] Iskalno DrevoOddelek: Programiranje | 2071 (1637) | Ciklamen |
» | Predstavitev dvojiškega drevesa z seznamomOddelek: Programiranje | 1936 (1536) | ktka |
» | Za programerske teoretikeOddelek: Programiranje | 8798 (5600) | Jerry000 |
» | C# HashSet<T>, HashTable kako deluje iskanje v ozadju? a lahko faila?Oddelek: Programiranje | 1540 (1321) | detroit |
» | Naloga v C-ju pomočOddelek: Programiranje | 2448 (2048) | keworkian |