: Şimdi anladığımı yazim a+b=x x-c=y y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer yle ise paylaşırım c# olarak. formül programda sabit değilmi değişkenlik gstermeyecek. formül sürekli değişecek bunu sürekli belirttim :) neyse zaten bıraktım yapmıyorum süresi doldu iş de yattı :) teşekkr ederim herkese

http://scriptasylum.com/tutorials/infix_postfix/infix_postfix.html şyle bişey buldum bak bide Si vis pacem para bellum.

http://www.c-sharpcorner.com/uploadfile/mgold/codedomcalculator08082005003253am/codedomcalculator.aspx Bunu kullanarak bahsettiğin şeyi aşşağıdaki gibi component haline getirmiştim. kullanışlı. Değişken olayını kapsadığını sanmıyorum using System; using System. Collections. Generic; using System. Text; using System. Windows. Forms; using System. CodeDom. Compiler; using System. Collections; using System. Text. RegularExpressions; using System. Reflection; using Microsoft. CSharp; using System. IO; using System. CodeDom; namespace HolyOne. Controls { public class MathTextBox:TextBox { / ICodeCompiler CreateCompiler / CSharpCodeProvider loCompiler = new CSharpCodeProvider ;//. CreateCompiler ; /// /// Creawte parameters for compiling /// /// CompilerParameters CreateCompilerParameters string RefineEvaluationString { // look for regular expressions with only letters Regex regularExpression = new Regex ; // track all functions and constants in the evaluation expression we already replaced ArrayList replacelist = new ArrayList ; // find all alpha words inside the evaluation function that are possible functions MatchCollection matches = regularExpression. Matches ; foreach { // if the word is found in the math member map, add a Math prefix to it bool isContainedInMathLibrary = _mathMembersMap != null; if (replacelist. Contains false && isContainedInMathLibrary) // we matched it already, so don't allow us to replace it again replacelist. Add ; } // return the modified evaluation string return eval; } public string LastError void InitializeFields /// /// Compiles the c# into an assembly if there are no syntax errors /// /// private CompilerResults CompileAssembly protected override void OnKeyDown { if try catch base. OnKeyDown ; } public bool CalculateOnEnter /// /// Compiles the code from the code string /// /// /// /// /// private CompilerResults CompileCode { //actually compile the code CompilerResults results = compiler. CompileAssemblyFromSource ; //Do we have any compiler errors? if (results. Errors. Count > 0) return results; } private void Calculate { // Blank out result fields and compile result fields InitializeFields ; // change evaluation string to pick up Math class members string expression = RefineEvaluationString ; // build the class using codedom BuildClass ; // compile the class into an in-memory assembly. // if it doesn't compile, show errors in the window CompilerResults results = CompileAssembly ; Console. WriteLine ; Console. WriteLine(_source. ToString ; // if the code compiled okay, // run the code using the new assembly if else } ArrayList _mathMembers = new ArrayList ; Hashtable _mathMembersMap = new Hashtable ; void GetMathMemberNames { // get a reflected assembly of the System assembly Assembly systemAssembly = Assembly. GetAssembly(typeof ; try { //cant call the entry method if the assembly is null if { //Use reflection to get a reference to the Math class Module modules = systemAssembly. GetModules ; Type types = modules . GetTypes ; //loop through each class that was defined and look for the first occurrance of the Math class foreach { if { // get all of the members of the math class and map them to the same member // name in uppercase MemberInfo mis = type. GetMembers ; foreach } //if the entry point method does return in Int32, then capture it and return it } //if it got here, then there was no entry point method defined. Tell user about it } } catch } private double calcresultdbl = 0; public double Value { get } / public string ValueStr { get } / private void WriteLine /// /// Runs the Calculate method in our on-the-fly assembly /// /// private void RunCode { Assembly executingAssembly = results. CompiledAssembly; try { //cant call the entry method if the assembly is null if { object assemblyInstance = executingAssembly. CreateInstance ; //Use reflection to call the static Main function Module modules = executingAssembly. GetModules ; Type types = modules . GetTypes ; //loop through each class that was defined and look for the first occurrance of the entry point method foreach { MethodInfo mis = type. GetMethods ; foreach { if } } } } catch } CodeMemberField FieldVariable CodeMemberField FieldVariable /// /// Very simplistic getter/setter properties /// /// /// /// /// CodeMemberProperty MakeProperty { CodeMemberProperty myProperty = new CodeMemberProperty ; myProperty. Name = propertyName; myProperty. Comments. Add(new CodeCommentStatement(String. Format("The property is the returned result", propertyName))); myProperty. Attributes = MemberAttributes. Public; myProperty. Type = new CodeTypeReference ; myProperty. HasGet = true; myProperty. GetStatements. Add( new CodeMethodReturnStatement( new CodeFieldReferenceExpression(new CodeThisReferenceExpression , internalName))); myProperty. HasSet = true; myProperty. SetStatements. Add( new CodeAssignStatement( new CodeFieldReferenceExpression(new CodeThisReferenceExpression , internalName), new CodePropertySetValueReferenceExpression ; return myProperty; } public MathTextBox StringBuilder _source = new StringBuilder ; /// /// Main driving routine for building a class /// void BuildClass { // need a string to put the code into _source = new StringBuilder ; StringWriter sw = new StringWriter ; //Declare your provider and generator CSharpCodeProvider codeProvider = new CSharpCodeProvider ; ICodeGenerator generator = codeProvider. CreateGenerator ; CodeGeneratorOptions codeOpts = new CodeGeneratorOptions ; CodeNamespace myNamespace = new CodeNamespace ; myNamespace. Imports. Add(new CodeNamespaceImport ; myNamespace. Imports. Add(new CodeNamespaceImport ; //Build the class declaration and member variables CodeTypeDeclaration classDeclaration = new CodeTypeDeclaration ; classDeclaration. IsClass = true; classDeclaration. Name = "Calculator"; classDeclaration. Attributes = MemberAttributes. Public; classDeclaration. Members. Add(FieldVariable("answer", typeof , MemberAttributes. Private)); //default constructor CodeConstructor defaultConstructor = new CodeConstructor ; defaultConstructor. Attributes = MemberAttributes. Public; defaultConstructor. Comments. Add(new CodeCommentStatement ; defaultConstructor. Statements. Add(new CodeSnippetStatement ; classDeclaration. Members. Add ; //property classDeclaration. Members. Add(this. MakeProperty("Answer", "answer", typeof ; //Our Calculate Method CodeMemberMethod myMethod = new CodeMemberMethod ; myMethod. Name = "Calculate"; myMethod. ReturnType = new CodeTypeReference(typeof ; myMethod. Comments. Add(new CodeCommentStatement ; myMethod. Attributes = MemberAttributes. Public; myMethod. Statements. Add(new CodeAssignStatement(new CodeSnippetExpression , new CodeSnippetExpression ; // myMethod. Statements. Add(new CodeSnippetExpression("MessageBox. Show(String. Format(\"Answer = \", Answer))")); myMethod. Statements. Add( new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression , "Answer"))); classDeclaration. Members. Add ; //write code myNamespace. Types. Add ; generator. GenerateCodeFromNamespace ; sw. Flush ; sw. Close ; } } } Mesaj 23 Temmuz 2012 Saat: 12:58'da HolyOne tarafından düzenlendi. Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı ktektir!

: Şimdi anladığımı yazim a+b=x x-c=y y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer yle ise paylaşırım c# olarak. formül programda sabit değilmi değişkenlik gstermeyecek. Yok hoca byle değil. Formul surekli değişir isterse a+ olur yani. Ve değişkenleride yani a, b, c, d bunlar da textboxtan alıncak :D onlarda sürekli değişebilir www.dunyadailkler.com

Zaten sanıldığı kadar kolay bişey değil bu olay daha ncede sylemiştim her formül için çzüm verebilmesi için stack yapısını kullanman gerekir http://scriptasylum.com/tutorials/infix_postfix/algorithms/infix-postfix/index.htm http://scriptasylum.com/tutorials/infix_postfix/algorithms/postfix-evaluation/index.htm gayet güzel açıklamış burda... Si vis pacem para bellum.

yok mu işin içinden çıkabilen? Boş İşler Uzmanı..

parantez olması zorunlu değil ki c# da zaten ekranda parantez gsteripte işlem yaptırmak biraz mesele. ordaki parantezler işlemi blmek neyin nerde ne iş yapacağını gstermek amacıyla konulmuş sanırım. drt tane textboxun içine farklı sayılar yazılıyor bunların ilk ikisi toplanıyor o toplamın sonucu ücüncüyle çıkarılıyor ve drdünc textboxa blünüyor. bunlar da tek butana basınca oluyor :) muş.. c# dışında bir dillede yapılır ancak benim diğer dillerde program yazacak kadar bilgim yok...

: RebelliouS_SouL bunu yazdı: Şimdi anladığımı yazim a+b=x x-c=y y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer yle ise paylaşırım c# olarak. formül programda sabit değilmi değişkenlik gstermeyecek. Yok hoca byle değil. Formul surekli değişir isterse a+ olur yani. Ve değişkenleride yani a, b, c, d bunlar da textboxtan alıncak :D onlarda sürekli değişebilir Tam müridenin son mesajını okuduktan sonra yanlış anlamışım editlim diyecekken alıntılamışsın.

recep ingilizce yetersizliği uyarısı verdk biz :) biraz daha anlyabileceğimiz bir şekilde bize anlatırmısın mahsuru yoksa Boş İşler Uzmanı..

stack yapısını infix, prefix, postfix araştır bunları işine yararlar :) Si vis pacem para bellum.

: Cali_KuSu bunu yazdı: RebelliouS_SouL bunu yazdı: Şimdi anladığımı yazim a+b=x x-c=y y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer yle ise paylaşırım c# olarak. formül programda sabit değilmi değişkenlik gstermeyecek. formül sürekli değişecek bunu sürekli belirttim :) neyse zaten bıraktım yapmıyorum süresi doldu iş de yattı :) teşekkr ederim herkese Benim yazdigim kod o isi yapiyor zaten :s ayrıca denedim çalışmıyor :)

resimdeki formul kısmına kullanıcı tarafından girilen değerleri programın okuyup işlem yapması gerekiyor kod kısmına tanımladığımızda sadece orda tanımlanan formule işlem yapıyor. ancak kullanıcı farklı formuller girdiğindede o girilen formule gre işlem yapacak.. nasıl yapabilirim? ekran grüntüsü bu linkte http://a6. sphotos. ak. fbcdn. net/hphotos-ak-ash3/557325_3594490388029_1271683623_n. jpg

: stack yapısını infix, prefix, postfix araştır bunları işine yararlar :) araştırıyorum

aslında çok basit bir şekilde yapılabilir ama parantezler işlem nceliği işi bozuyor değil mi bunun için string karakterleri okuyarak nce paratez var mı yok mu ona bakarız. İçine ayrı işlem kalanına ayrı işlem yaparak yapılabilir. --sadece fikir vermek amaçlı denemedim. www.dunyadailkler.com

: nce string olarka a parantez arasını bul sonra o işlemin sonucu E ye ata E/D yaptır sonucu verir herhadl rneğin demiş ama işlem ((3+4) (5+8))/(6-2)+(3 4) te olabilir veri yapıları : stack, list, queue stack mantığı nedir LIFO yani son eklediğini ilk çıkarırsın. stackte 2 tip işlem yaparsın push ve pop, push yığına eleman ekler pop çıkarır. c# istiyorsun madem bi stack tanımla bi kaç bişey pushla popla bunları bildikten sonra devamını sen halledersin zaten zorlanmadanMesaj 22 Temmuz 2012 Saat: 02:55'da SinusX tarafından düzenlendi. Si vis pacem para bellum.

:) sen calistiramamisindir. calisiyor istersen aldigin hatayi yaz bakayim istersen de suanda linuxteyim. windows'a gecince derliyip atarim. Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.

evde canim sikilmaya baslamisti, bunu gordum. c'de gercekliyim dedim. yaptim, oldu :) . p parantez konusunda, islem konusunda sikinti yok. ayrica ^ power ' i da ekledim. istediginiz kadar yazanbilirsiniz. ama pek dinamik degil, yani aslinda amac algoritmayi yapmak,, bu yuzden bellek ayirirken biraz sabitledim olayi.. ..

Şimdi anladığımı yazim a+b=x x-c=y y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer yle ise paylaşırım c# olarak. formül programda sabit değilmi değişkenlik gstermeyecek.

: iqsuz bunu yazdı: ajan olaydı çakardı cevabı iki dakkada grdüm konuyuda biraz dağılmıştı mevzuu. vbasic olaydı bi şekilde yapılırdı ama. net istiyor ;) text'in her karakteri tek tek kontrol edilir. selstart'la toplam karakter. mid komutuylada "(" karakteri kontrol edilir. for i=1 to text1. selstart if mid(text1. text,1, i)="(" then a=mid(text1. text,1, i+1) b=mid(text1. text,1, i+3) if mid(text1. text,1, i+4)=")" then exit for c=mid(text1. text,1, i+5) d=a mid(text1. text,1, i+2) b mid(text1. text,1, i+4) end if next i not: yazdıklarım vbasic 6.0 için. ezberden hatırladığım kadarıyla yazdım. yazım veya mantık hatası olabilir. eksikte olabilr. ama kabataslak byle bişey olurdu. Mesaj 22 Temmuz 2012 Saat: 03:08'da ajan1111 tarafından düzenlendi. demiştim siker geçer diye:)

a | 16 | b | 7 | c | 3 | d | 4 | Formül | /d | hesapla : 5 grüntü byle olacak

Up Muride kardesimize yardim. . - @Kaptan ın daha delikanlı olduğunu kanıtlayan şahsiyet ile tanıştım..

Cevap : http://stackoverflow.com/questions/4876945/c-sharp-formula-123-21522-evaluation Bu sistemi suanda 2-3 programda kullaniyorum birisi bankacilik uygulamasi :) Edit : istegini yazayim dedim hemen. string strFormul = txtFormul. Text. Replace . Replace . Replace ; var calc = new System. Data. DataTable ; var dbSonuc = calc. Compute ; MessageBox. Show(dbSonuc. ToString ; txtFormul, txtA, txtB, txtC forma eklenmeli. bunuda bir butonun icine yaz. Mesaj 25 Temmuz 2012 Saat: 14:40'da rakkoc tarafından düzenlendi. Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.

: ... demiştim siker geçer diye:) :) sylemek istememiştim ama kurduğu mantık yanlış, her zaman en içteki parenteze gre çzülüp geriye doğru ya da ileriye doğru açılma yapılmalıdır. mesela ( ... + ... (... / ... + ...) ... ) gibi işlemde çker mantığı. o yüzden ilk başta ) parentezini bulup ondan sonra geriye gidip ( arayıp ikisi arasındaki işlemi çzmek gerekli.. zamanım olursa bunun rneğini vb. net ya da c# için yaparım Mesaj 22 Temmuz 2012 Saat: 16:14'da unbalanced tarafından düzenlendi. Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

: a | 16 | b | 7 | c | 3 | d | 4 | Formül | /d | hesapla : 5 grüntü byle olacak tekxBox değil textBox diye düzeltelim ncelikle. Aslında bunu denedim çok uzun birsey cıkıyor diye bıraktım. Burdaki parantezler işlem nceliğini gsteriyor bu yuzden once kaç tane parantez var onu bulman lazım. Ya da yok mu. bunların ındexOf la indexlerini bulcaksın. Sonra bu indexlerle Substring metodu ile içini alıp işlem yapman lazım. Ayrıca içinde kaç değişken var 2 mi 3 mü buna gre switch case le birseyler yapman lazım. Kısaca byle ama uzun hikaye yani :D www.dunyadailkler.com

ajan olaydı çakardı cevabı iki dakkada

: stack yapısını infix, prefix, postfix araştır bunları işine yararlar :) hocam bunları bilmiyorum ve c# eğitimi almadım. düz mantık giriyorum. nce buton tıklandığında textboxda parantez arayacak. bulursa "parantez aç " ın arasında kalan yeri alıp işlemleri gerçekleştircek. parantez arası sonuca atıyorum t saysısı diyecek. sonra işlemin geri kalanını çzecek. ve labele yazacak. işlem çzme kısmı da şyle ki: her sayı operatründen sonra gelen 4 işlem işareti için if else gibi bi yapı kullan ona gre de işlemleri yap umarım açıkca anlatabilmişimdir. Not: nce programı parantezsiz şekilde geliştir. sonra paranteze akarsın. hatta daha sonra 2li parantez kullanmayı falan geliştirirsin. soruyu sorana iyi kapak olur ;)

: ajan olaydı çakardı cevabı iki dakkada grdüm konuyuda biraz dağılmıştı mevzuu. vbasic olaydı bi şekilde yapılırdı ama. net istiyor ;) text'in her karakteri tek tek kontrol edilir. selstart'la toplam karakter. mid komutuylada "(" karakteri kontrol edilir. for i=1 to text1. selstart if mid(text1. text,1, i)="(" then a=mid(text1. text,1, i+1) b=mid(text1. text,1, i+3) if mid(text1. text,1, i+4)=")" then exit for c=mid(text1. text,1, i+5) d=a mid(text1. text,1, i+2) b mid(text1. text,1, i+4) end if next i not: yazdıklarım vbasic 6.0 için. ezberden hatırladığım kadarıyla yazdım. yazım veya mantık hatası olabilir. eksikte olabilr. ama kabataslak byle bişey olurdu. Mesaj 22 Temmuz 2012 Saat: 03:08'da ajan1111 tarafından düzenlendi. Kayalardan kayarım yoktur benim ayarım (;

: recep ingilizce yetersizliği uyarısı verdk biz :) biraz daha anlyabileceğimiz bir şekilde bize anlatırmısın mahsuru yoksa senin icin editledim postumu :) Edit : istegini yazayim dedim hemen. string strFormul = txtFormul. Text. Replace . Replace . Replace ; var calc = new System. Data. DataTable ; var dbSonuc = calc. Compute ; MessageBox. Show(dbSonuc. ToString ; txtFormul, txtA, txtB, txtC forma eklenmeli. bunuda bir butonun icine yaz. Mesaj 25 Temmuz 2012 Saat: 14:41'da rakkoc tarafından düzenlendi. Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.

// // parser. c // exp_parser // // Created by guru on 7/22/12. // Copyright 2012 MyCompanyName. All rights reserved. // #include "parser. h" #define PRI_POW 2 #define PRI_MULTI 1 #define PRI_DIVIS 1 #define PRI_SUMM 0 #define PRI_SUBS 0 char m_str_infix; char m_str_temp; char m_str_temp_pt; char m_pt; Stack m_stack; Queue m_qu_postfix; int m_global_priority; void initalize_parser void free_parser BOOL get_number_if_exist void parse { Node topStack; char chnext; double number; int priority; for (; != '\0';) { switch { case ',': case '.': case '0':case '1':case '2':case '3':case '4': case '5':case '6':case '7':case '8':case '9': m_str_temp_pt++ = chnext; break; case '(': m_global_priority += 2; break; case ')': m_global_priority -= 2; break; case '^': priority = PRI_POW + m_global_priority; goto PROG; case ' ': priority = PRI_MULTI + m_global_priority; goto PROG; case '+': priority = PRI_SUMM + m_global_priority; goto PROG; case '-': priority = PRI_SUBS + m_global_priority; goto PROG; case '/': priority = PRI_DIVIS + m_global_priority; PROG: if (get_number_if_exist queue_put(m_qu_postfix, create_node(number, operand, 0)); //if stack is not empty //compare precedences for (; ! stack_isempty ; ) { topStack = stack_pop ; if queue_put ; else } stack_push(m_stack, create_node ; break; default: break; } } //last operations if (get_number_if_exist queue_put(m_qu_postfix, create_node(number, operand, 0)); for (; ! stack_isempty ; ) } Queue get_postfix double calc(Node oper, Node operand1, Node operand2){ switch oper. _value) } double calculate { Node node; Node topStack; Node temp; clear_stack ; for (; ! queue_isempty ; ) { node = queue_get ; if else { if (stack_isempty topStack = stack_pop ; if (stack_isempty temp = stack_pop ; //push back the result into the stack stack_push(m_stack, create_node( calc , operand, 0)); } } node = stack_pop ; return node. _value; } void show { Node node; for (; ! queue_isempty ; ) } projeyi asagiya ekledim, olayin dondugu kod kismi burasi oldugu icin, bunu da yazayim dedim. https://www.dropbox.com/s/bhng8h7n6e6ds25/exp_parser. zip..

: RebelliouS_SouL bunu yazdı: Şimdi anladığımı yazim a+b=x x-c=y y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer yle ise paylaşırım c# olarak. formül programda sabit değilmi değişkenlik gstermeyecek. formül sürekli değişecek bunu sürekli belirttim :) neyse zaten bıraktım yapmıyorum süresi doldu iş de yattı :) teşekkr ederim herkese Benim yazdigim kod o isi yapiyor zaten :s Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.

bu işle ilgili gece bi şimşek çaktı kafamda da syleyim dedim (: text'in change olayında yapmak daha kolay olur heralde. her girilen karaktere gre işlem yaparsın. girilen karakter if text1. text="(" then bak=1 if bak=0 then a=b+c 'gibisinden bişey end if if bak=1 then x=y+z 'buralarada textin uzunluğunu kontrol ederek en sondaki karakteri alabilirsin. vbasic te right(text1. text,1) gibi bişey 'gibisinden bişey end if not: yine saçmalamış olabilirim. kodlamaya kalktın mı bi sürü sorun çıkacaktır. gerisine karışmam (: ama ilk müsait olduğumda bununla ilgili bişeyler yazacam. bende merak ettim nasıl olacak. Kayalardan kayarım yoktur benim ayarım (;

win form için değilde konsol için bi rnek var, benim baya işime yaramıştı http://www.daniweb.com/software-development/csharp/code/217185/console-calculator-part-1-the-scanner http://www.daniweb.com/software-development/csharp/code/217186/console-calculator-part-2-the-parser http://www.daniweb.com/software-development/csharp/code/217187/console-calculator-part-3-the-calculator-engine

basit bir hesap makinası yazarak bunu çzebilirim. yani o sonucu alırım ama burda hepsini tek bir butanda istiyor. yada diyelimki a+b yi yaptı bu işlemin devamını yani a+b yi c de atsa c-d diye devam etse bu mümkünmü peki? mümkünse nasıl yapabilirim?

Bir Windows form açıyorsun. 4 tane sayılar için textbox koyuyorsun. İsimlerini a, b, c, d şeklinde verebilirsin. Bir tane de formül alanı için textbox koyuyorsun. Bir tane çalıştırma için buton ve bir tane de sonucu yazdırmak için label koyuyorsun. Program çalıştırıldığında formül alanına " / d " girip butona bastığımızda sonucu label nesnesine yazıyorsun. Formül değiştirilip butona basılınca yeni formüle gre yeniden hesaplama yapacak. rneğin programa " / D " girdisi verildiğinde ve A=16, B=7, C=3, D=4 değerleri verildiğinde sonuç olarak 5 değerini vermeli. bu işlemi nasıl yapabilirim?

: Cali_KuSu bunu yazdı: RebelliouS_SouL bunu yazdı: Şimdi anladığımı yazim a+b=x x-c=y y/d=sonuc şimdi ben doğrumu anladım program bunumu yapacak eğer yle ise paylaşırım c# olarak. formül programda sabit değilmi değişkenlik gstermeyecek. formül sürekli değişecek bunu sürekli belirttim :) neyse zaten bıraktım yapmıyorum süresi doldu iş de yattı :) teşekkr ederim herkese Benim yazdigim kod o isi yapiyor zaten :s Biraz geç kaldı..

çok biliyorum ben kesin yaparım.. :) bu sorunuda çzemedim :) hadi hayırlsı bakalım.. yattı bu projede..

nce string olarka a parantez arasını bul sonra o işlemin sonucu E ye ata E/D yaptır sonucu verir herhadl I am Jack's inflamed sense of rejection

Zamanın birinde VB6 kullanarak benzer bir şey yapmıştım. - Doğru çalışan kısımlar: 1) Parantezler doğru ele alınıyor. 2) İşlem nceliğine dikkat ediliyor. 3) Parantez sayısı + 1 z yineleme yapıyor. 4) Geri kalan işlemler iterasyon ile gerçekleşiyor. Dinamik bellek ynetimi yerine hedef ifade parçalarının işi biten kısımları "b" olarak işaretleniyor. Karmaşıklık logaritmik azalıyor. 5) Eşit nceliğe sahip işleçler soldan sağa yapılıyor . - Yapamadıkları : 1) Tekli işleç desteklenmiyor. rneğin (4 + -1) ifadesini çzemiyor olması lazım. Yalnız istediğiniz şey için sorun çıkarmayacaktır. 2) Parantez içindeki tek ifadeler (rneğin (5)) doğru hesaplanmıyor. 3) Parantez işaretlerinin tam olmadığı durumlar (unbalanced parantheses, rneğin "( 4 +4 (4 4)") yakalanmıyor. Fakat ufak bir değişiklikle yakalanması kolay. 4) Herhangi bir hata yakalama mekanizması mevcut değil. Proje kodları burada: http://speedy.sh/C5Fdb/mathexpr. rarMesaj 22 Temmuz 2012 Saat: 21:59'da YeniHarman tarafından düzenlendi. Olaylara karışmayın!

ağaç yapısını araştır müride (: al hatta tam olarak konuyu anlatan slayt sana (: veri yapıları konularını araştırarak bulabilirsin http://logicalarea.com/img/8. ppt Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.