[معرفی برنامه] ماشین حساب با قابلیت محاسبه جملات متعدد

شروع موضوع توسط arash-mmb-tz ‏19 ژوئن 2017 در انجمن برنامه Multimedia Builder

  1. arash-mmb-tz

    arash-mmb-tz Active Member

    ارسال‌ها:
    210
    تشکر شده:
    248
    امتیاز دستاورد:
    43
    سلام.
    میدونم حالا میگید این چه پروژه ایه یه بچه سه ساله هم میتونه درست کنه :lol:
    ولی چیزی که اون بچه سه ساله درست میکنه، دو تا Editbox میاره زیر هم و دکمه های + و * و / و - میزاره و چند تا متغییر و یه Display value میزاره و تموم!
    اما من ( که مشخصا بالاتر از 3 سال سنمه D: ) اومدم یه کاری کردم که بشه جملات متعدد رو حین نوشتن محاسبه کرد و همچینین پرانتز ها رو به خوبی محاسبه کنه
    از اینجا میتونید هم خود برنامه و هم سورسش رو دانلود کنید ( با molebox پک کردم واسه همین فایل اجراییش 300 کیلوبایت بیشتره)

    [​IMG]
    حالا به طور خلاصه چه چیزی این نرم افزار رو از ماشین حساب هایی که با دو تا editbox درست میکنن متمایز میشه؟ (اسکریپت cal رو هم خواستید توی پروژه ببینید که مغز متفکر این نرم افزاره و موارد زیر تصحیحش به عهده اونه) مثلا اگه متغییر زیر رو به MMB بدید، غش میکنه:
    کد (Text):
    Calculate = 5×-3.4+9(5)÷(2)3
    به چند دلیل:
    اولا اصلا × و ÷ توی mmb و خیلی از زبون های برنامه نویسی تعریف نشده و به صورت * و / نوشته میشه (حالا این یکی که با یه StrChange درست میشه زیاد مهم نیست)
    دوما توی mmb مثلا خروجی value=3*-4 رو 4- نشون میده که یعنی ضرب و منها و همچنین تقسیم و منها رو کنار هم تشخیص نمیده
    سوما mmb نمیتونه خروجی متغییر value=(3)5 یا (value=(3)(5 یا (value=3(5 رو حساب کنه. در اصل هر یک از سه متغییری که گفتم، نشانگر 5*3 هست
    چهارما، وقتی متغییر value=3(2(4 رو تعریف میکنیم، مشخصا منظورمون 4*2*3 هست، یعنی اگه پرانتز نوشته نشد، نرم افزار تشخیص بده که دقیقا چند تا پرانتز باید ببنده
    پنجما، توی نرم افزارم از هیچ Editbox ـی استفاده نکردم. یعنی اینکه کاملا باید قواعد نوشتن یک عبارت ریاضی رو توی نرم افزارم تعریف کنم. مثلا نرم افزار نباید اجازه نوشتن این عبارات رو داشته باشه:
    [​IMG]
    همچنین تمام کلید های ماشین حساب رو باید تعریف میکردم مخصوصا Backspace که توی mmb به طور عادی بدون پلاگین تشخیص داده نمیشه.
    و خیلی از چیز های ریز و درشت دیگه که تا قصد ساختن همچین ماشین حسابی نکنید، نمیدونید ممکنه همینایی که گفتم به جای ده دقیقه بیشتر از 6 ساعت زمان ببره
    این نرم افزار هم خالی از باگ نیست و ممکنه در مواردی باگ هایی وجود داشته باشه. اگه توی همین تاپیک بگید ممنون میشم
     
    آخرین ویرایش: ‏19 ژوئن 2017
    نوشته شده توسط arash-mmb-tz در ‏19 ژوئن 2017
    MahmoodM30 از این پست تشکر کرده است.
  2. MahmoodM30

    MahmoodM30 مدیر <A href="http://forum.majidonline.com/forums/

    ارسال‌ها:
    2,022
    تشکر شده:
    2,964
    امتیاز دستاورد:
    113
    ممنون از برنامه خوبتون و زحمتی که کشیدین ولی برای این کار یه پلاگین موجود هستش میتونید تست بکنید من تست کامل نکردم فقط تو آرشیو فایل هام بود
     

    پیوست ها:

    • Max_Math_1.2.rar
      اندازه فایل:
      کیلوبایت 1.7
      نمایش ها:
      4
    نوشته شده توسط MahmoodM30 در ‏21 ژوئن 2017
    arash-mmb-tz و محمدمهدی از این پست تشکر کرده اند.
  3. arash-mmb-tz

    arash-mmb-tz Active Member

    ارسال‌ها:
    210
    تشکر شده:
    248
    امتیاز دستاورد:
    43
    سلام محمود جان
    خیلی ممنون بابت معرفی پلاگین.
    سورسی رو که فرستادید رو اجرا کردم و (3)2 رو بهش دادم نتیجه جالبی رو نشون داد: (البته اگه عبارت3)2 رو بهش بدیم صفر نشون میده )
    [​IMG]

    اسکریپت زیر کار این پلاگین رو به راحتی انجام میده:
    کد (Text):
    CreateScript("ui","outlabel$")
    ScriptParam$='SCRIPT:1=' + 'ryder='+var$
    SetObjectParam("outlabel$","ScriptParam$")
    RunScript("outlabel$")
     
    یعنی بعد تصحیح عبارت نوشته شده توسط کاربر (مثل همون مثال هایی که در پست اول دادم) یه اسکریپت درست میکنه و عبارت تصحیح شده رو در متغییر ryder قرار میده و MMB اتوماتیک محاسبه اش میکنه یعنی دقیقا کار همین پلایگن رو میکنه کد بالا.
    اما چالش من توی درست کردن برنامه تصحیح عبارت نوشته شده توسط کاربره به طوری که MMB اون عبارت رو درک کنه و محاسبه اش کنه
     
    آخرین ویرایش: ‏6 جولای 2017
    نوشته شده توسط arash-mmb-tz در ‏6 جولای 2017
    MahmoodM30 از این پست تشکر کرده است.

به اشتراک بگذارید