PDA

View Full Version : سوال: چگونگی ساخت یک Math Parser



daniyaltjm
شنبه 13 شهریور 1395, 13:52 عصر
سلام دوستان همینطور که میدونید توی ساختمان داده ما مطلبی داریم با عنوان عبارات infix , postfix و prefix که مربوط به موقعیت عملوندها و عملگرها است که توی کتابهای ساختمان داده نحوه تبدیل رو گفتند ولی برای محاسبه مقدار یک عبارت postfix به infix چیزی گفته نشده! برای اینکار Math Parser های زیادی وجود داره مثل Math Parser .NET , Mathos Parser , mXparser اما حالا اگه بخوایم خودمون بسازیم باید چطوری از استک استفاده بکنیم البته باید پرانتز هم در نظر گرفته شود لطفا اگه کسی اطلاعی داره این کد رو بنویسه و برای چهار عمل اصلی و پرانتز هم کافیه بقیه عملگرها و توابع رو خودم گسترش میدم.

Mahmoud.Afrad
شنبه 13 شهریور 1395, 14:15 عصر
http://barnamenevis.org/showthread.php?369710-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%B9%D8%A8%D8%A7%D8%B1%D8%AA-%D9%85%DB%8C%D8%A7%D9%86%D9%88%D9%86%D8%AF%DB%8C-%D8%A8%D9%87-%D9%BE%D8%B3%D9%88%D9%86%D8%AF%DB%8C-%D9%88-%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87-%D8%A2%D9%86-Infix-To-Postfix-and-Compute-Postfix
http://barnamenevis.org/showthread.php?341730-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-Postfix-%D8%A8%D9%87-Infix

daniyaltjm
شنبه 13 شهریور 1395, 17:50 عصر
http://barnamenevis.org/showthread.php?369710-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%B9%D8%A8%D8%A7%D8%B1%D8%AA-%D9%85%DB%8C%D8%A7%D9%86%D9%88%D9%86%D8%AF%DB%8C-%D8%A8%D9%87-%D9%BE%D8%B3%D9%88%D9%86%D8%AF%DB%8C-%D9%88-%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87-%D8%A2%D9%86-Infix-To-Postfix-and-Compute-Postfix
http://barnamenevis.org/showthread.php?341730-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-Postfix-%D8%A8%D9%87-Infix


این تایپیکتون (http://barnamenevis.org/showthread.php?369710-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%B9%D8%A8%D8%A7%D8%B1%D8%AA-%D9%85%DB%8C%D8%A7%D9%86%D9%88%D9%86%D8%AF%DB%8C-%D8%A8%D9%87-%D9%BE%D8%B3%D9%88%D9%86%D8%AF%DB%8C-%D9%88-%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87-%D8%A2%D9%86-Infix-To-Postfix-and-Compute-Postfix)به کارم میاد، یعنی یه عبارت رشته ای رو گرفته و هم تبدیل به Postfix کرده و هم مقدارش رو حساب میکنه فقط خیلی خوب می شد اگه برای هر خطش یک کامنت میزاشتین تا بیشتر متوجه بشیم .

و یک مشکلی هم که داره اینه که مقادیر منفی رو درست محاسبه نمیکنه مثلا 5+9- رو اشتباه 14- حساب میکنه!!!

و یک مشکل هم با محاسبه عبارت 6 + 2 / 9 داره!!!!!!!!!!!!!!!!!!!!!!!!

Mahmoud.Afrad
شنبه 13 شهریور 1395, 23:40 عصر
این تایپیکتون (http://barnamenevis.org/showthread.php?369710-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%B9%D8%A8%D8%A7%D8%B1%D8%AA-%D9%85%DB%8C%D8%A7%D9%86%D9%88%D9%86%D8%AF%DB%8C-%D8%A8%D9%87-%D9%BE%D8%B3%D9%88%D9%86%D8%AF%DB%8C-%D9%88-%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87-%D8%A2%D9%86-Infix-To-Postfix-and-Compute-Postfix)به کارم میاد، یعنی یه عبارت رشته ای رو گرفته و هم تبدیل به Postfix کرده و هم مقدارش رو حساب میکنه فقط خیلی خوب می شد اگه برای هر خطش یک کامنت میزاشتین تا بیشتر متوجه بشیم .

و یک مشکلی هم که داره اینه که مقادیر منفی رو درست محاسبه نمیکنه مثلا 5+9- رو اشتباه 14- حساب میکنه!!!

و یک مشکل هم با محاسبه عبارت 6 + 2 / 9 داره!!!!!!!!!!!!!!!!!!!!!!!!

اصلاح کردم.

vb8334
یک شنبه 14 شهریور 1395, 12:38 عصر
سلام

دوست عزیز من چند وقت پیش برنامه ماشین حساب رو با پرانتز درست کردم یک عبارت ریاضی بهش میدی و محاسبه میکنه.

علامت منفی پشت عدد تو این برنامه کار نمیکنه یه مقدار حوصله نکردم تکمیلش کنم. امیدوارم مفید باشه براتون

موفق باشید