سلام
من ميخواستم برنامه اي بنويسم كه بتونه يك معادله مثل
رو كه كاربر وارد ميكنه حل كنه.3+(4*6)+7-(5/2)
لطفا كمكم كنيد.![]()
سلام
من ميخواستم برنامه اي بنويسم كه بتونه يك معادله مثل
رو كه كاربر وارد ميكنه حل كنه.3+(4*6)+7-(5/2)
لطفا كمكم كنيد.![]()
باید ابتدا آن را از حالت infix (حالت معمولی) به حالت postfix ببریم:
الگوریتمش اینجوریه:
سپس از روی postfix مقدار عبار ترا به دست آورید:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Parsing دقیقاً برای همین کار هستش.
توی گوگل دنبال Parser بگردی یه چیزایی پیدا میکنی.
منم یه Parser خیلی قدرتمند نوشتم که فکر کنم جالب باشه ببینید:
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خيلي از دوستان متشكرم
ولي آقاي حميدرضاي عزيز اگه يه تكه كد نمونه هم ميزاشتي خيلي بهتر ميشد.
آخه من يكم آماتورم
سلام
این دیگه الگوریتم کاملشه! اگه قرار بود نمونه کد بگذارم که فهمیدنش خیلی سخت تر بود.
شما اگه با توجه به الگوریتم بالا کدتون رو بنویسین کار خواهد کرد.
خوشبختانه با راهنمايي هاي دوستان خوبم موفق شدم.
كدشم ميزارم برا استفاده ديگر دوستان عزيز:
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با تشكر از دوستان.
![]()
Last edited by MOHAMMAD_s2010; 23-12-2008 at 22:06.
برنامه ای که شما نوشتید اجرا می شه ولی عبارت توان دار رومحاسبه نمیکنه مرتبا پیغام stack is empty رو میده ؟مقدار 30 که در ابتدای برنامه تعریف کردین اندازه ی پشته ست؟ در مورد توابع isunder ,isover,intpush,intpop هم میشه توضیح بدید؟
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)