PDA

View Full Version : سوال: راهنمای در نوشتن ماشین حساب مهندسی



adonis27
دوشنبه 18 آذر 1392, 23:09 عصر
سلام

آیا در کنسول میشه ماشین حساب مهندسی نوشت که مثل همون کار کنه؟

من میخوام یه ماشین حساب مهندسی بنویسم که بیشتر عمل ریاضی رو داشته باشه
اما گیج شدم با سویچ کیس که نمیشه همه عمل هارو نوشت این اولی

بعدش من میخوام مثل ماشین حساب واقعی باشه یعنی هر چیقد کاربر دلش بخواد بتونه ورودی بده اگه با سویچ کیس منو سازی کنم کاربر میتونه فقط یه عمل رو انتخاب کنه من نمیخوام اینطوری باشه
یه مثال میزنم
مثلا کاربر بتونه اینطوری ورودی بده
دو ضرب دو به علاوه دو به توان 5و مثلا قدر مطلق جواب قبلی تو یه سطر

خودتون اگه با چنین ماشین حسابی کار کرده باشین میفهمین چی میگم
و مهم ترین قابلتش این باشه که تابع های که مینویسم بتونم تو هر بار ورودی دادن استفاده کنم مثل مثال بالا که چنتا تابع رو همزمان با هم استفاده کردم

خواهشا راهنمای کنین

siryahya
دوشنبه 18 آذر 1392, 23:33 عصر
با سلام
1. دوست عزیز تو کنسول هیچ محدیدیتی نسبت به توابع یا ویژگی های زبان ندارید فقط اشیای گرافیکی نمیتونید استفاده کنید!

2.دوست عزیز به نظرم اینجا که میگید با هم عملگرها رو میتونیم بزنیم، از روش inorder استفاده کنید که تو کتاب ساختمان داده و طراحی الگوریتم هم توضیح و کدش موجوده

adonis27
دوشنبه 18 آذر 1392, 23:34 عصر
دادا من ترم اولم هنوز نخوندم میشه توضیح بدین

hadi0x7c7
دوشنبه 18 آذر 1392, 23:37 عصر
بله این طور ماشین حسابی رو میشه نوشت، متنها شما باید با گرامر ها آشنا باشید، به این صورت که یک گرامر تعریف میکنید که شامل تعریف تابع، توابع خواص، اولویت عملگرها و... رو توی اون گرامر تعیین میکنید، بعد این گرامر رو تبدیل به کد میکنید که میشه یه پارسر.

این یه نمونه از این مدل پیاده سازی هست:
113731

adonis27
دوشنبه 18 آذر 1392, 23:46 عصر
دادا بیشتر مبحث رو باز کن

hadi0x7c7
دوشنبه 18 آذر 1392, 23:52 عصر
اگه برید درباره نوشتن پارسر از نوع Recursive Decent برای گرامر های (1)LL تحقیق کنی یه دو روز وقت بزاری میفهمی که این کد چی کار میکنه.
درباره اینا سرچ کن:
Grammar for mathematical expression
Writing a recursive decent parser

adonis27
سه شنبه 19 آذر 1392, 00:06 صبح
دادا به زبون ساده تر بگو تا بتونم بنویسم نحوه نوشتنشو بهم بگو

siryahya
سه شنبه 19 آذر 1392, 00:12 صبح
دوست عزیز سری به این لینک بزن، گروه نمونه ای از ماشین حساب نوشته است که فکر کن مکارتو را بندازه
ماشین حساب (http://takcoder.ir/post/147)

adonis27
سه شنبه 19 آذر 1392, 00:20 صبح
یه جا دیگه آپلود کن

siryahya
سه شنبه 19 آذر 1392, 00:27 صبح
دوست عزیز لینک مشکلی ندارد/ یک بار دیگه سعی کنید
ماشین حساب (http://takcoder.ir/post/147)

adonis27
سه شنبه 19 آذر 1392, 00:39 صبح
درست شد دمت گرم

ولی من میخوام نحوه پیاده سازیو خودم یاد بگیرم اینم سورس خوبیه ولی بعضی جا ها واسم گنکه

adonis27
سه شنبه 19 آذر 1392, 13:07 عصر
هیچکی نیست به زبون ساده راهنمای کنه

ali chegini
سه شنبه 19 آذر 1392, 16:19 عصر
سلام.
برای شروع شما باید در مورد اولویت های محاسباتی بدونی .
مثلا جواب 2*3+1
چی میشه ؟ اول جمع رو انجام میدی یا ضرب ؟
اگر اول ضرب باشه جواب میشه 7 ولی اگر اول جمع باشه جواب میشه 8.
بعد باید بدونی چه جوری میشه این رو پباده سازی کرد یعنی از آرایه استفاده کنی یا از پشته یا از ....
باید از درخت استفاده کنی و درخت رو با لیست پیوندی می تونی پیاده سازی کنی.
بعد از اینکه اولویت رو فهمیدی باید به کامپیوتر بفهمونی.
که همون طور که siryahya گفت باید در مورد LRV بدونی.
http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Binary_Algebraic_Expression_Tree.JPG/250px-Binary_Algebraic_Expression_Tree.JPG
مثلا این بالا یه درخت میبینی.این درخت شامل گره و یال است.گره ها که مشخصه یال هم خط ارتباط بینشون در نظر بگیر.
حالا این درخت رو چه طوری از روی ورودی کاربر مثلا 4+5 درست کردیم ؟
بعدش از کجا شروع کنیم یعنی اول بریم سمت چپ یا سمت راست ؟
این یعنی پیمایش درخت به چه نحوی باشه . چند نوع پیمایش داریم :
Left Right Visit
این یکیشه و معنیش اینه که اول گره چپ بعد گره راست و بعد ریشه.
عباراتی که کاربر می نویسه به صورت infix یا همون LVR هستند.

adonis27
سه شنبه 19 آذر 1392, 16:23 عصر
اگه میشه همین سوالاتی که پرسیدین کاملا توضیح بدین و یه منبع خوب و فارسی در مورد lrv معرفی کنین

ali chegini
سه شنبه 19 آذر 1392, 16:29 عصر
برنامه لینک زیر رو دانلوذ کن .تبدیل infix رو به postfix انجام میده.
postfix=LRV
لینک (http://barnamenevis.org/showthread.php?430291-%DA%A9%D9%85%DA%A9-%D8%B1%D8%B4%D8%AA%D9%87-%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D8%A7%D8%AA%DB%8C-%D8%AF%D8%B1-c-(%D9%85%D8%AB%D9%84-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-%D8%AD%D8%B3%D8%A7%D8%A8-%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C))
(اساتید بزرگوار اگه جایی اشتباه گفتم تصحیح کنید)

ali chegini
سه شنبه 19 آذر 1392, 16:31 عصر
این لینک رو حتما ببین .
http://maktabkhooneh.org/course?course=JShewchuk200
اینم ببین :
لینک (http://www.denadownload.com/%D8%AC%D8%B2%D9%88%D9%87-%D8%AF%D8%B1%D8%B3-%D8%B3%D8%A7%D8%AE%D8%AA%D9%85%D8%A7%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7/)

mayaaa
دوشنبه 27 مرداد 1393, 15:41 عصر
با سلام
من نیاز ضروری به فلوچارت ماشین حساب مهندسی و تحلیل ان دارم
توروخدا کمکم کنید

iut.ali
دوشنبه 27 مرداد 1393, 16:56 عصر
واسه اینکار باید مفهوم درخت ها و postfix و prefix رو بلد باشی که اگه کامپیوتری باشی احتمالا ترم 2 تو گسسته بخونی اگه هم زود تر میخوای بفهمی یه سرچی بکن نیازی به پیاده سازی نداره کتابخونه هاش موجوده در ضمن توی کنسول هم میتونی با یه سری توابع یه چیز گرافیکی ساده درست کنی

Coder#
دوشنبه 27 مرداد 1393, 17:02 عصر
کتاب بخون و کمی به کله ات فشار بیار.

محسن=0
دوشنبه 27 مرداد 1393, 17:21 عصر
کمی به کله ات فشار بیار.

بانمک بود.



کتاب بخون .

چه کتابهایی به غیر از برنامه نویسی باید خونده شود

motherboard
دوشنبه 27 مرداد 1393, 18:46 عصر
بهترین کار برای ساختن ماشین حساب مهندسی اینه که یک سر به لینک زیر بزنی و اصلا ببینی همین ها رو هم متوجه می شی!!!!
برو به اینجا (http://qt-project.org/doc/qt-4.8/widgets-calculator.html)

Coder#
دوشنبه 27 مرداد 1393, 21:46 عصر
چه کتابهایی به غیر از برنامه نویسی باید خونده شود؟
بستگی به هدفی داره که در پیش گرفتی; یعنی قصد نوشتن چه نوع برنامه ای رو داشته باشی.
برای مثال: برای ساخت سیستم عامل، خوبه کتاب هایی راجع به سیستم عامل مثل Operating Systems: Internals and Design Principles رو مطالعه کنی.
اول باید هدفت رو معلوم کنی، بعد باید پله ها رو کم کم طی کنی.

در کُل برای بهتر شدن در کدنویسی/برنامه نویسی، بهتره که هر روز سعی در توضیح اتفاقات خوب و بد روزانه به خودت با اعداد و عملگرهای ریاضی داشته باشی.
اگر قصد ساخت نرم افزارهای امنیتی مثل ضد-ویروس رو داری، باید کتاب هایی در خصوص امنیت کامپیوتر بخونی. از طرف دیگه، یک نفر زمانی می تونه به یک هکر تبدیل بشه که از قوانین آگاه باشه; زمانی که شخصی از قوانین فوق آگاه شد، می تونه قوانین رو نقص کنه و بشکنه. از طرف دیگه، زمانی می تونی از خودت در برابر آسیب های کامپیوتری محافظت کنی که آسیب ها رو بشناسی.
در کُل باید تجربه کسب کنی، که این کار با سر به زیری امکان پذیره.
کدنویسی/برنامه نویسی تنها یک حرفه یا رشته نیست، بلکه یک هنره; در این هنر مثل هر هنری، هنرمند خوب و بد وجود داره.