با سلام
من میخام برنامه ای بنویسم که در یک Edit کاربر فرمولی شبیه 2+5/6 یا (7+4-3*4)/4 رو وارد میکنه.برنامه باید بتونه حاصل رو محاسبه کنه.
هر فرمولی ممکنه در ورودی وارد بشه
راهنمایی لطفا
با تشکر فراوان
با سلام
من میخام برنامه ای بنویسم که در یک Edit کاربر فرمولی شبیه 2+5/6 یا (7+4-3*4)/4 رو وارد میکنه.برنامه باید بتونه حاصل رو محاسبه کنه.
هر فرمولی ممکنه در ورودی وارد بشه
راهنمایی لطفا
با تشکر فراوان
باید از پشته استفاده کنی
حالا کجاش رو مشکل داری؟
تمرین هست یا هدف کاربردی داری؟
You never know what you can do until you try
ممنون از جوابتون
این یه قسمتی از پروژه هست.
روند استفاده از پشته رو لطفا بفرمایید از یک پشته کافیه؟
این چیزی نیست که من بخوام اینجا توضیح بدم
یه بحث کامل است که معمولا توی کتابهای ساختمان داده ها مطرح میشه
ولی اگه بخوای از کامپوننتهای آماده استفاده کنی 1stClass یه Calcedit داره که میتونه یه ماشین حساب رو زیر یک Edit باز کنه
اگر هم اولویت عملگرها و پرانتزها برات مهم نیست من فکر کنم یک نمونه کد دارم(محمود؟)
You never know what you can do until you try
اینم پیاده سازیش با پشته
برای استفاده دیگران گذاشتم
http://www.delphi32.com/vcl/5613/
توی این سایت کامپیوننت های مجانی دیگه ای هم هست
اگر ساختمان داده رو خونده باشی بهترین کار تبدیل فرمول به عبارت post Fix میباشد و سپس محاسبه عبارت جدید.
ترکیب (علامت سوال) و (Answer) خیلی جالبه
اگه بخام همه این کارها رو خودم بکنم قیمت پروژه به شدت افزایش پیدا میکنه ابزارهای مجانی و آماده که با هدف کاهش کد نویسی برنامه نویس ایجاد شدن بهترین گزینه هستند
ممنون از جوابت ولی پیاده سازی پشته انقدر ها هم سخت نیست
یه push , pop ساده هست چند خط بیشتر هم کد نویسی نداره .
همون طوری که دوستان گفتن از مباحث ساختمان داده ست و راحت میشه پیداش کرد چیز ساده ایه.
ولی این مسئله با وجود عدد منفی وجود پرانتز و همچنین اولویت عملگر ها مثل ضرب و تقسیم یه ذره پیچیده میشه که بهتره بجای وقت گذاشتن روش از نمونه های آماده و مجانی استفاده بشه
با سلام
بخاطر همین گفتم از آرایه استفاده کن.
مثلا عبارت
100 * 2000 - (-200)
برای ذخیره به شکل زیر عمل می کنی.
100
*
2000
-
200-
حالا با یک بار پیمایش در آرایه آرایه را به شکل زیر تغییر می دهید.
100
*
2000
+
200
و کارهای دیگر هم به همین شکل.
راحتر از پشته است و نیازی به خالی کردن پشته نیست تا به -200 برسیم
موفق باشید
خوب اگر بخواهد همپین کاری بکند برای پشتیبانی بهتر پرانتزها بهتره از لیست های پیوندی استفاده کنه.
هیچ راه حلی به زیبایی پشته نمیشه تازه اگه راه حلی بجز پشته هم داشته باشه