PDA

View Full Version : مقدار دهی یک فرمول رشته ای با مقادیر واقعی



qeidarlo
یک شنبه 22 آذر 1388, 21:14 عصر
با سلام
من میخواستم یک فرمول که بصورت رشته ذخیره شده است را با متغییرهای واقعی مقدار دهی نماییم. آیا این کا امکان پذیر است.



int a=12;
int b=13;
string result="a*3+b*6"; a
console.write(string) g

در انتها فرمول محاسبه شده و در result قرار گیرد.

fjm11100
دوشنبه 23 آذر 1388, 08:50 صبح
اره بايد فرمولت را parse كني و اپراتورهاشو دربياري و با رعايت اولويت عمليات ضرب و تقسيم و غيره محاسبه اش كني

hamedsabzian
دوشنبه 23 آذر 1388, 14:10 عصر
باید رشته رو تفسیر کنی ، براش یه درخت بر اساس اولویت عملگرها و نوع عملوند ها مثل عکس زیر بسازی. بعد هم می تونی یه تابع بنویسی که اون درخت رو ارزش یابی کنه، یعنی به ازای این درخت و مقدار متغیر ها در نهایت یه عدد بر گردونه. پیمایش درخت برای پیدا کردن ارزش اون ساده است ، کافیه که مقدار متغیرها رو توی یه لیست یا هر چیز دیگه ای نگه داری بعد موقع رسیدن به گره متغیر مقدار اون رو از لیست ور داری و به جاش قرار بدی. کار اصلی ساختن درخته که باید با استک انجام بشه. یه این صورت که دوتا استک می سازیم یکی برای عملگر ها که باید از نوع درخت باشه و یکی برای عملوند ها که میتونه از نوع رشته باشه، حالا رشته رو کاراکتر به کاراکتر می خونیم اگه عملگر بود که میره توی استک عملگرها و اگه نبود میره تو استک عملوند ها. فقط باید موقع وارد کردن عملگر ها تو استک دقت کنی که عملگری که اولویتش پایین تره نمی تونه روی عملگر با اولویت بالاتر بیاد. و اگه خواست بیاد باید عملگر زیری از استک بیرون بیاد و متناسب با اینکه یک عملوندی یا دو عملوندیه عملونداش از روی استک عملوندا برداشته شن و یه زیر درخت از اونا درست شه و اون زیر درخت به استک عملوندها اضافه شه.

ASKaffash
دوشنبه 23 آذر 1388, 14:25 عصر
سلام
یک راه راحت این است که محاسبه را گردن مثلا SQLServer بیاندازید :


int a = 12;
int b = 13;
string result = "a*3+b*6";
result = result.Replace("a", a.ToString());
result = result.Replace("b", b.ToString());
SqlConnection C = new SqlConnection("Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=master;server=");
C.Open();
this.Text = new SqlCommand("Select " + result, C).ExecuteScalar().ToString();