بدست آوردن مقدار متناظر یک عبارت

splinter cell

Well-Known Member
سلام دوستان
توی یک تکست باکس عبارتی شبیه یکی از اینها توسط کاربر نوشته میشه

کد:
4+9
-7+5
-(5+8)

چطور مقدار اون رو حساب کنیم؟ فرمانint رو امتحان کردم و فقط صفر رو بر میگردونه.ممنون میشم راهکار ارائه بدین:rose:
 

ali512

Active Member
مقداری که در text هست از نوع رشته ای است بنابراین دستور خاصی وجود ندارد که حاصل عبارت را بدست آورد .
شما باید از روش ساختمان داده ها برای محاسبه استفاده کنید که نیاز به کد نویسی می باشد .
پیشنهاد می کنم تو اینترنت سرچ کن بدست آوردن حاصل یک عبارت ریاضی در سی" بعد اون دستورات را خوب بخونید و معادلش را با اکشن اسکریپت بنویسید . وقت می بره موفق باشید .
 

sabersoft

Active Member
میانوندی:
( (A * B) + (C / D) )
پسوندی:
( (A B *) (C D /) +)
پیشوندی:
(+ (* A B) (/ C D) )
منبع
الگوريتم تبديل عبارت ميانوندی به پسوندی
1. عبارت كامل پرانتزگذاری می‌ شود
2. هر عملگر به سمت راست پرانتز باز خود منتقل می شود
3. پرانتزها حذف می شوند
تبديل عبارت ميانوندی به پيشوندی
1. عبارت كامل پرانتزگذاری می‌ شود
2. هر عملگر به سمت چپ پرانتز بسته خود منتقل می شود
3. پرانتزها حذف می شوند
تبديل عبارت پسوندی به پيشوندی
1. ابتدا عبارت پسوندی را تبديل به ميانوندی می ‌كنيم
2. عبارت ميانوندی حاصل را به پيشوندی تبديل می ‌كنيم
نكته. در تبديل عبارات ترتيب عملوندها تغيير نمی‌كند.

برای حل هم از پشته باید استفاده کنید
لینک های زیر را ببینید :
http://www.hpkclasses.ir/Courses/DataStructure/ds0800.html
http://mohammadhashemy.mihanblog.com/post/73
 
آخرین ویرایش:

aliamel

کاربر فعال

JavidFlasher

کاربر فعال
سلام
بهترین راه واسه این کار استفاده از یه parserه
من یکی قبلا دیده بودم تو سایت flashandmath.com
که سینوس و کسینوس و ...خیلی چیزای دیگه رو پارس میکرد از استرینگ
یه سرچی بزنین.Math parser
 

++Hadi++

Active Member
به این کار می گن evalation یا eval ...می تونید parser هایی رو تو نت برا این مورد پیدا کنید.الگریتم اصلیش تو کتاب ساختمان داده در C++ برا کتاب دانشگاهی سهنی دیتل اند دیتل و یا جعفر نژاد قمی و ... هست.موفق باشید...
 

جدیدترین ارسال ها

بالا