در این پروژه قرار است عملکرد یک ماشین حساب را شبیه سازی کنیم. عملیات جمع (+)، تفریق (-)، ضرب (*)، تقسیم (/)، توان (^) ، را باید پیاده سازی کنید. دقت داشته باشید که اعداد ورودی میتوانند از نوع اعشاری نیز باشد و برنامه شما باید "." (ممیز) را پشتیبانی کند. با توجه به اینکه ماشین حساب باید پرانتز گداری عبارات را نیز پشتیبانی کند با کمک ساختمان داده استک، پرانتز گذاری و اولویت عبارات را محاسبه نمایید. (کلاس ساختمان داده استک را باید خودتان پیاده سازی کنید و استفاده از کلاس های آماده برای آن مجاز نیست!)
راهنمایی: یکی از روش ها برای محاسبه عبارات تبدیل آن ها به فرم postfix است .
اگر عبارت داده شده فرمت صحیح واستانداردی نداشته باشد مثلا پرانتز گذاری اشتباه باشد و یا عملگر ها درست استفاده نشده باشند باید ارور چاپ کرده و سپس آن را مدیریت نمایید. .مثال هایی از ورودی های نادرست که باید ارور چاپ کند:
)(1+3)*2<br>
(((2+5)^2)+4<br>
3+5^<br>
+5^<br>
5/0<br>
یک عبارت ریاضی شامل اعداد گویا و پرانتز "()" و عملگر های مورد نظر است که به صورت یک رشته داده می شود .
یک عدد که حاصل عبارت ریاضی داده شده است ویا پیغام ارور در صورت وجود خطا.
ورودی1:
(1+3) * 2^2
عبارت خروجی 1:
16
ورودی2:
-(-(2^3))/4+1
عبارت خروجی 2:
3
ورودی3:
-(((1+2)*(-3))^(1+1))
عبارت خروجی 3:
-81
ورودی4:
)(2+3)
عبارت خروجی 4:
error
ورودی5:
3+4^
عبارت خروجی 5:
error
ورودی6:
((1.4+1.6)*10)/100
عبارت خروجی 6:
0.3
ماشین حساب شما باید در هر مرحله از محاسبه وضعیت عبارت را چاپ کند .
چاپ مراحل محاسبه:
مرحله 1:
4*(2^3)
مرحله2:
4*8
مرحله3:
32
جواب نهایی:
32
علاوه بر موارد گفته شده شما باید عبارت ریاضی داده شده در ابتدا را به فرم درخت تبدیل کرده و چاپ کنید.
مثال : ورودی:
(1+3)*(2^3)
خروجی درخت:
tree:
- دقت کنید نیازی به نمایش گرافیکی درخت عبارت نیست و تصویر بالا برای درک بهتر درخت نمایش داده شده است. شما بصورت چاپی از ریشه درخت شروع کرده و به سلیقه خودتان درخت را نمایش دهید. ( اما به عنوان بخش اضافه میتوانید با کتابخانه های گرافیکی آن را نمایش دهید.)
- همانند استک، ساختمان داده درخت را نیز خودتان باید پیاده سازی کنید و استفاده از ساختمان داده های آماده مجاز نیست!
برای پیاده سازی این بخش شما باید در منوی برنامه خود گزینه ای به نام "add new operator "داشته باشید تا با استفاده از ان بتوان عمگلر های دلخواه تعریف کرد و به ماشین حساب اضافه کرد و در محاسبات از انها استفاده کرد. نحوه تعریف اپراتور جدید به صورت زیر خواهد بود:
add new operator
a Comp b = 2*a+b
add new operator
a trick b = a^b/b
add new operator
a square b = a^2+b^2
- گرافیک زیبا برای خود ماشین حساب
- افزدون عملگرهای ماشین حساب علمی
- وارد کردن توابع ریاضی
- رسم نمودار توابع
- محاسبه مشتق ،و ازین دست توابع
- هرگونه خلاقیت و نکته اضافی که به فکرتان رسید (دستتون بازه :) )