View Full Version : real calculator
menosoft
چهارشنبه 23 مرداد 1387, 09:44 صبح
با سلام
شما حتما با برنامه maple یا ماسین حساب auto cat کار کرده ای
میخواستم بدونم چگونه میشه این رو تو vb شبیه ساری کرد مثلا
یه عبارت مانند : !cos(30) * tan(30)+5 توسط کار بر در textbox نوشته بشه وبا زدن کلید enter مقدارش محاسبه شود
sohrab o
چهارشنبه 23 مرداد 1387, 11:23 صبح
خوب این کار نداره.روش های زیادی هست.
مثلا اول cos(30) و tan(30) و 5! رو با استفاده از جدا کننده های بینشون ( * ، + ، - ، /) جدا کن ، سپس در یک آرایه 2 بعدی قرار بده . بطور مثال :
cos(30)
*
tan(30)
+
5!
و سپس در خانه بعدی مقدار های توابع را بدست بیار
مثلا:
مقدار cos(30)
*
مقدار tan(30)
+
مقدار 5!
در آخر هم باتوجه به به اولیت عملگر ها آنها رو با هم جمع ، تفریق ، ضرب و یا تقسیم میکنیم.
حتما روش های بهتری هم هست ، اما این روشو من همین الان فکر کردم و نوشتم .
menosoft
چهارشنبه 23 مرداد 1387, 19:09 عصر
خوب اینکه درست اما اگر بخوایم cos(x) +tan(x^2) v رو محاسبه کنیم چکار باید کنیم ,
Mbt925
پنج شنبه 24 مرداد 1387, 10:56 صبح
شما باید عبارت رو با روشهای پیشوندی یا پسوندی پردازش کنید و به راحتی به جوابتون برسید.
مثال های زیادی در رابطه با این مورد در بخش قرار داده شده.
Hossein Bazyan
پنج شنبه 24 مرداد 1387, 13:39 عصر
خوب این کار نداره.روش های زیادی هست.
مثلا اول cos(30) و tan(30) و 5! رو با استفاده از جدا کننده های بینشون ( * ، + ، - ، /) جدا کن ، سپس در یک آرایه 2 بعدی قرار بده . بطور مثال :
cos(30)
*
tan(30)
+
5!
و سپس در خانه بعدی مقدار های توابع را بدست بیار
مثلا:
مقدار cos(30)
*
مقدار tan(30)
+
مقدار 5!
در آخر هم باتوجه به به اولیت عملگر ها آنها رو با هم جمع ، تفریق ، ضرب و یا تقسیم میکنیم.
حتما روش های بهتری هم هست ، اما این روشو من همین الان فکر کردم و نوشتم .
سلام
به همین راحتی هم نیست شاید یکی از مشکلات طراحی کامپایلرها همین قسمت باشد . شاید برای چهار عمل اصلی بشه کاری کرد اما اگر بخواهیم مسایل به پرانتزها و حق تقدم و غیره بکشه خیلی پیچیده تر از این حرفهاست.
فقط جدا کردن نیست که ( جدا کردن هم کلی دردسر داره - با توجه به تنوع توابع و عملگرهای ریاضی ) باید حق تقدم رو رعایت کنی . حق تقدم با داشتن چند پرانتز فرق میکنه با بدون پرانتز .مثلا
a= 10 + 2 * 6 = 22
a= (10 + 2 ) * 6 = 72
حال اگر پرانتز تو در تو داشته باشیم که واویلاست
البته کار نشد نداره اما خوب اینکار به همین سادگیهام نیست !
sohrab o
پنج شنبه 24 مرداد 1387, 16:22 عصر
خوب این یه ایده بود.
شما میتونید اینو گسترش بدین.
به قول جناب مدیر Mbt925 باید از روش های PERFIX و POSTFIX استفاده کنی
menosoft
چهارشنبه 30 مرداد 1387, 11:12 صبح
بازم از تمامی دوستان تشکر می کنم:لبخند::لبخند:
خودم یه بر نامه پیدا کردم که این کارو تا حدودی انجام میده اما از یک Dll استفاده می کنه که اونم با VB نوشته شده امامن نتونستم با VB Decompiler سورسشو در بیارم حال این بر نامه رو اینجا میگذازمش شاید شما بتونید این کارو کنید
menosoft
پنج شنبه 31 مرداد 1387, 09:43 صبح
بازم از تمامی دوستان تشکر می کنم
من سورس یک ماشین حساب که بر پایه متن است رو پیدا کردم
اونو اینجا می گذارم شاید به درد شماهم بخوره اگر از سورسش سر درآوردید به من هم خبر بدید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.