View Full Version : حرفه ای: تبدیل string به معادله (یه چیزی تو مایه های کمپایل)
khmahdi
یک شنبه 10 آبان 1388, 17:27 عصر
سلام بر همه ؛
می خوام یه برنامه بنویسم معادله ی y بر حسب x بگیره و اونو باترفند نقطه دهی رسم کنه؛تا این جاش حرفه ای نبود مشکل من تو رسم نیست ،بلکه مشکل من تو تبدیل string به معادله است ، کسی می تونه مشکل منو حل کنه؟
*- یعنی اگه یه textbox داشته باشم که تو خاصیت تکستش معادله ی من باشه ،
چجوری "y="2x^3+1^2 به (y=2*Math.pow(x,3)+Math.pow(1,2 تبدیل کنم؟(فکر کنم اسمش کمپایله)
*- کامپوننتی برای رسم معادله سراغ دارید؟(با این که این مشکل من نیست)
saied_genius
یک شنبه 10 آبان 1388, 18:25 عصر
string ورودي را بگير و با string.replace کاراکترهاي مورد نظر جايگزين کن.
سوالي بود در خدمتم.
موفق باشيد.
khmahdi
یک شنبه 10 آبان 1388, 18:30 عصر
می شه یه مثال بزنید؟
JaguarXF
یک شنبه 10 آبان 1388, 19:46 عصر
می شه یه مثال بزنید؟
خب، اینطور که بنظر میرسه اهل اینکه بری دنبالش و تحقیق کنی و تو گوگل سرچ کنی و ... نیستی.
یه کدی میخواهید حاضر آماده . هلو برو تو گلو :
بفرمایید: این رو دانلود کنید:
http://farm4.static.flickr.com/3120/2388284012_7af197ce95.jpg
http://weblogs.asp.net/pwelter34/archive/2007/05/05/calculator-net-calculator-that-evaluates-math-expressions.aspx
saied_genius
یک شنبه 10 آبان 1388, 20:11 عصر
اين هم يک dll که خودم نوشتم براي اجراي string به عنوان command
نحوه استفاده:
saiedDelshad09131041838Evaluate.Evaluate.Eval("MessageBox.Show(\"Test\");");موفق باشيد.
khmahdi
دوشنبه 11 آبان 1388, 16:52 عصر
باتشکر از آقای JaguarXF ،من دانلودش کردم ولی خیلی مشکل داره ، توی تقدم ها که کاملا مشکل داشت، اگه چیزی دیگه تو این مایه ها دارید لطف کنید بذارید
آقای saied_genius مثل اینکه منظور بنده رو درست نفهمیدید یا من درست از dll شما سر در نیاوردم،
من یه همچین کدی دارم:
int x=5;
string tmp="x^2*7-5";
y=?!
می خوام x رو تو معادله ای که به صورت رشته ای هست بذارم وجواب رو تو y ذخیره کنم
کمک لطفا!
saied_genius
دوشنبه 11 آبان 1388, 18:06 عصر
من حالا نمي دانم شما چيکار مي خواهيد بکنيد يا چطوري مي خواهيد معادله را حل کنيد.
ببينيد فرض را بر اين مي گيريم که شما معادله "x^2*7-5" را به Math.Pow(x,2)*7)-5) تبديل کرديد ، خوب حالا چي ؟!
شما چطوري مي خواهيد يک رشته به شکل "Math.Pow(x,2)*7)-5)" را به اجرا در بياوريد.
البته راه هاي ديگري هم هست ، مثل مثالي که دوستمان زده بودند.
در آن حالت شما در اصل رشته را parse مي کنيد و بر اساس آن به زبان #C فقط متغير ها را جايگزين مي کنيد. (فقط متغير مي دهيد)
اما در کار با dll که من گذاشتم ، نه فقط اينجا ، بلکه هر جاي ديگر هم نيازتان باشد مي توانيد هر رشته را به عنوان command اجرا کنيد. (فکرش رو بکن ! اصلاً کار راحتي نيست نوشتن چنين dll ي).
خلاصه اينکه ، تصميم با شماست که از چه راهي استفاده کنيد ولي در اصل شما بايد کل توابعي که ممکن است مورد استفاده قرار بگيرند را در يک کلاس تعريف کنيد ، تقدم ها را بيابيد و سپس با string.replace جايگزين کنيد.
اگر در هنگام جايگزيني از #C استفاده کنيد و مستقيم تبديل به تابع نماييد که هيچ، در آخر هم اجرا مي کنيد، اما اگر بخواهيد به string تبديل کنيد و در آخر string را به عنوان command اجرا کنيد ، بايد از dll من استفاده نماييد.
سوالي بود در خدمتم.
موفق باشيد.
اَرژنگ
دوشنبه 11 آبان 1388, 19:49 عصر
باتشکر از آقای JaguarXF ،من دانلودش کردم ولی خیلی مشکل داره ، توی تقدم ها که کاملا مشکل داشت، اگه چیزی دیگه تو این مایه ها دارید لطف کنید بذارید
آقای saied_genius مثل اینکه منظور بنده رو درست نفهمیدید یا من درست از dll شما سر در نیاوردم،
من یه همچین کدی دارم:
int x=5;
string tmp="x^2*7-5";
y=?!
می خوام x رو تو معادله ای که به صورت رشته ای هست بذارم وجواب رو تو y ذخیره کنم
کمک لطفا!
ببین چیزی که میخواهی اینه؟
http://www.codeproject.com/KB/cs/runtime_eval.aspx
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.