PDA

View Full Version : سوال: بررسی درستی پرانتزهای فرمول



IR-Developer
شنبه 16 اسفند 1393, 13:29 عصر
سلام توی قسمتی از پروژه کاربر یک فرمول وارد میکنه تا محاسبات بر اساس اون انجام بشه . حالا قبل از ثبت فرمول توی دیتابیس باید بررسی کنم پرانتزها را درست وارد کرده باشه و جا به جا و کم و زیاد نباشه .

بهترین و راحت ترین روش پیاده سازی چیه ؟

Mofid.m
شنبه 16 اسفند 1393, 13:51 عصر
اول فرمول رو به رشته تبدیل کن.
بعد یه آرایه بگیر به طول خود فرمول.
1- از اول رشته فرمول شروع کن اگر به پرانتز بسته رسیدی پس اشتباهه
اگر پرانتز باز بود یه کپی از اون رو بریزه تو آرایه(یعنی خود پرانتز باز رو)
2- اگر به پرانتز بسته رسیدی پرانتز اولی رو از آرایه پاک کن
اگر به پرانتز باز رسیدی دوباره بریز تو آرایه
3- این روند رو تا آخر رشته تکرار کن.
اگر فرمول درست باشه دیگه هیچ پرانتزی باقی نمیمونه
پس اگر بود فرمول غلطه

Mofid.m
شنبه 16 اسفند 1393, 14:16 عصر
اینم برنامشه


string str = textBox1.Text;
string[] ArrOK=new string[str.Length];


int top=0;
for (int i = 0; i < str.Length; i++)
{
if (top==0 && str[i] == ')')
{
label1.Text = "Error";
return;

}
else if (str[i] == '(')
{
ArrOK[top] = "(";
top++;
}
else if (str[i] == ')')
{
top--;
ArrOK[top] = "";
}



}


bool ok=true;
for (int i = 0; i < ArrOK.Length; i++)
{
if (ArrOK[i] == ")" || ArrOK[i] == "(")
ok = false;
}


if (ok)
label1.Text = "Ok";
else

label1.Text = "Error";

IR-Developer
شنبه 16 اسفند 1393, 14:20 عصر
اول فرمول رو به رشته تبدیل کن.
بعد یه آرایه بگیر به طول خود فرمول.
1- از اول رشته فرمول شروع کن اگر به پرانتز بسته رسیدی پس اشتباهه
اگر پرانتز باز بود یه کپی از اون رو بریزه تو آرایه(یعنی خود پرانتز باز رو)
2- اگر به پرانتز بسته رسیدی پرانتز اولی رو از آرایه پاک کن
اگر به پرانتز باز رسیدی دوباره بریز تو آرایه
3- این روند رو تا آخر رشته تکرار کن.
اگر فرمول درست باشه دیگه هیچ پرانتزی باقی نمیمونه
پس اگر بود فرمول غلطه

خوب مشکل اینجاست که شاید طرف بیاد پرانتز ها را جا به جا ببنده . مثل جایی از فرمول که یک پرانتز باید ببنده 2 تا ببنده و جای دیگه برعکس یکی ببنده . من میخوام ساختار فرمول هم با روشی چک کنم که فرمول قابل محاسبه و درست ذخیره بشه و ایراداتش به کاربر گفته بشه تا اصلاح کنه .

Mofid.m
شنبه 16 اسفند 1393, 14:25 عصر
خوب مشکل اینجاست که شاید طرف بیاد پرانتز ها را جا به جا ببنده . مثل جایی از فرمول که یک پرانتز باید ببنده 2 تا ببنده و جای دیگه برعکس یکی ببنده . من میخوام ساختار فرمول هم با روشی چک کنم که فرمول قابل محاسبه و درست ذخیره بشه و ایراداتش به کاربر گفته بشه تا اصلاح کنه .

این کدی که گذاشتم رویه بار چک کن
یه پروژه باز کن یه تکست باکس بزار و یه باتن و یه لیبل
اسمشون رو هم عوض نکن فقط Text لیبل رو پاک کن.
بعد بیا تو رویداد کلیک باتن این کد ها رو بزار و چند تا فرمول بهش بده.
من که میگم جواب میده.
میتونی روش کار کنی و به سلیقه خودت درش بیاری