PDA

View Full Version : سوال: محاسبه یک فرمول بر اساس متغیرهای موجود در برنامه



FirstLine
جمعه 10 دی 1395, 23:30 عصر
با سلام
در یک برنامه WinForm & C#‎ .Net2 چند تا متغییر دارم که از دیتابیس مقدارشون رو دریافت میکنند (مثلا سه متغیر با نامهای A , B ,C )
حالا چند تا تکست باک برای کاربر گذاشتم که باید بصورت فورمولی یک سری خروجی از این متغیرها را به کاربر نشون بدهد
مثلا موارد زیر که با زدن یک دکمه نتیجه این فورمول را بصورت یک مقدار عددی را نشون بده:
فرمول 1: 2A+6B-C
فرمول 2: 2A-4B-2C
فرمول 3: 3A-6B-4C
فرمول 4: 6A.-B.C
فرمول 5: 7A.3B.-2C

من نمیدونم وقتی که فرمول را در تکست باکس نوشت چجوری عددها را در این فرمول ها قرار بدهم و محاسبه و سپس نمایش بدهم


البته تعداد متغیرها حدود 30 عدد است و تعداد فرمولها هم حداقل 50 فرمول که همه فرمولهای ساده هستند (جمع، ضرب، تفریق) که این فرمولها نیز در دیتابیس ذخیره شده و قابل تغییر هستند و بر اساس ایت فرمولها و مقادیر دیتابیس گزارشهای زیادی تهیه میشود، بهمین دلیل باید امکان ویرایش فرمولها را نیز به کاربر بدهم

با تشکر

ژیار رحیمی
شنبه 11 دی 1395, 00:45 صبح
سلام محسابه فرمول داینامیک نیاز به paser دارد.لازم به نوشتن paser نیست با استفاده از یک کتابخانه رایگان این کارو انجام بده.
ابتدا dll زیر رو به پروژه اضافه کن




using info.lundin.Math;

ExpressionParser parser = new ExpressionParser();
Hashtable h = new Hashtable();
int v1 = 1;
int v2 = 2;
int v3 = 5;
h.Add("a", v1.ToString());
h.Add("b", v2.ToString());
h.Add("c", v3.ToString());
double result = parser.Parse("2a+6b+c", h);
MessageBox.Show(result.ToString());

FirstLine
شنبه 11 دی 1395, 00:54 صبح
با سلام
بسیار ممنون و سپاسگزارم
متاسفانه این dll برای .net 2 قابل استفاده نیست
با تشکر

Could not install package 'info.lundin.math.dll 1.1'. You are trying to install this package into a project that targets '.NETFramework,Version=v2.0', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

ژیار رحیمی
شنبه 11 دی 1395, 01:52 صبح
درست میفرمایید از دانت 4 به بالا support میشه
http://www.lundin.info/mathparser

FirstLine
شنبه 11 دی 1395, 19:08 عصر
با سلام
لطفا یک نمونه کاربردی برای .net2 معرفی کنید و یا راهکاری برای این کار معرفی کنید
با تشکر

aliagamon
جمعه 17 دی 1395, 01:27 صبح
من پیشنهاد میکنم از interpreter استفاده کنید،بهترین گزینه هم رو ویندوز vbscript هست
http://stackoverflow.com/questions/355062/is-there-a-string-math-evaluator-in-net