PDA

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



zohreh_zo
جمعه 08 اردیبهشت 1391, 09:28 صبح
با سلام
من ميخوام در برنامه ماشين حسابم پرانتز را در انجام محاسبات دخالت بدم .لطفا بگوييد چه كار كنم .
برنامه ماشين حساب را با استفاده از كلاسها نوشته ام.
با تشكر

Hossenbor
جمعه 08 اردیبهشت 1391, 09:52 صبح
از دستور زبان C# استفاده کنید حالا مشکلتون کجاست؟

Mahmoud.Afrad
جمعه 08 اردیبهشت 1391, 11:18 صبح
خب به طور معمول اگر ماشین حساب رو نوشتید با زدن دکمه های چهار عمل اصلی، عملیات روی مقادیر صرفا عددی انجام میشه. ولی وقتی بخواهید یک رشته محاسباتی رو محاسبه کنید باید از پردازش رشته ها کمک بگیرید. فرض کنید کاربر رشته ای شامل پرانتز رو وارد کنه. زمانی که شخص دکمه انجام محاسبه رو کلیک میکنه باید شما کدی نوشته باشید که از چب به راست رشته ورودی رو پردازش کنید از پرانتز های باز) عبور کنید تا به اولین پرانتز بسته( برسید. حالا این پرانتز بسته را با آخرین پرانتز بازی که ازش عبور کردید یعنی قبل از این هست رو باید در نظر بگیرید. عبارت داخلشو محاسبه کنید و جایگذین نماید. و همین کار رو با رشته جدید انجام بدید تا به یک مقدار بدون پرانتز و +-*/ برسید که جواب خواهد بود. مثلا :


(54 * (54 - 4))

ورودی باشه
بعد از یک مرحله پردازش باید به :


(54 * 50)

و در مرحله بعد به :


2700

تبدیل بشه و چون این رشته فاقد پرانتز و +-*/ هست پس جواب همینه.

البته رشته ورودی نباید شامل کاراکتر های دیگه ای باشه. یا اگر تعداد پرانتزهای باز و بسته مساوی نبود رشته فاقد اعتبار هست.

و اینکه این کار رو با پشته هم میتونید انجام بدید.

sds1920
جمعه 08 اردیبهشت 1391, 13:23 عصر
چند روز پیش یکی از دوستان سایت ازم خواست که یه ماشین حساب ساده براش بنویسیم.منم نوشتم ولی قابلیت پرانتز رو نداشت که حالا اضافه کردم.می تونید ازش استفاده کنید.موفق باشید

86370

tooraj_azizi_1035
جمعه 08 اردیبهشت 1391, 18:09 عصر
سلام باید از کلاس Stack (پشته) کمک بگیری. عناصر عبارت رو تا رسیدن به پرانتز بسته مرتب در پشته Push می کنی با رسیدن به پرانتز بسته عناصر داخل پشته رو Pop می کنی و مقدارش رو حساب می کنی با این کار داخلی ترین عبارت رو که درون پرانتز باز و بسته هست محاسبه کردی. این کار رو برای عبارات بیرونی تکرار کن.
اطلاعات بیشتر: http://www.c-sharpcorner.com/UploadFile/susanabraham/UsingStacksinCSharp11292005011857AM/UsingStacksinCSharp.aspx

Hossenbor
جمعه 08 اردیبهشت 1391, 19:20 عصر
چند روز پیش یکی از دوستان سایت ازم خواست که یه ماشین حساب ساده براش بنویسیم.منم نوشتم ولی قابلیت پرانتز رو نداشت که حالا اضافه کردم.می تونید ازش استفاده کنید.موفق باشید

86370

دوست عزیز کارت خوب بود فقط یک عملگر توان کم داشت من برای توان از این استفاده کردم ^

sds1920
شنبه 09 اردیبهشت 1391, 10:08 صبح
دوست عزیز کارت خوب بود فقط یک عملگر توان کم داشت من برای توان از این استفاده کردم ^

به قول معروف عمل سرپايي بود.بيهوشي کامل نبود :لبخند:و گرنه کاملتر مي نوشتم.

maktoom
پنج شنبه 01 تیر 1391, 21:18 عصر
سلام

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

WindowsFormsApplication1.zip

این رشته رو پذیرش نمی کنه:
8*(8*(8*(*8(8*(8*(8))))))

majidrezaei2007
جمعه 02 تیر 1391, 13:37 عصر
باید عبارات رو به شکل postfix در بیاری و بعد محاسبه کنی . در این صورت اثر پرانتز ضمنی میشه و مشکلت حل میشه