انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: احسان☺ - در 13 اردیبهشت 1392، 11:19 بظ
-
سلام خدمت همه ی برنامه نویسایه گرامی از دوستان کسی میتونه یه الگوریتم واسه ضرب و تقسیم اعشاری معرفی کنه که از حالت محاسبه دستی سریع تر باشه؟البته اگه وجود داره.اگه بشه کمک خیلی بزرگی به من کردین.
-
این که اعشاری ضرب و تقسیم بشه ، بستگی به چند چیز داره :
۱- زبان مورد استفاده
۲- نوع متغیر. مثلا متغیری که برای اعداد صحیح هست مثل تابع جزء صحیح میمونه (کلاس چندمی؟) مثلا فرض میکنم متغیر i از نوع عدد صحیح هست، و وقتی مثلا مقدار 3.233 رو بهش میدی ، اون رو بصورت
[i]=i
فرض میکنه. یعنی جزءصحیح i برابرست با i . ولی اگه از نوع اعشاری باشه، اینطور نیست و میشه i=i .
چه زبانی رو میخوای کار کنی؟ بعضی وقتها به متغیرها هیچ نوعی نسبت داده نمیشه (نمونش Haskell که هم میتونی نوعش رو تعیین کنی و هم بدون تعیین نوع متغیر باهاش کار کنی :) ) این مواقع میشه اعشار بهش داد و ازش خروجی اعشاری گرفت. ولی بعضی وقتها مجبور به تعیین نوع متغیر هستی که اون موقع باید نوعی رو تعیین کنی که اعشار هم قبول کنه (به عنوان ورودی).
-
الگوریتم رو برای چه کاری میخواید؟
-
من منظورت رو از سوالت نفهمیدم. :)
-
سلام
بهتره هدفت از این سوال رو هم بگی تا در صورت امکان بهتر بتونیم بهت کمک کنیم. اگه هدفت اینه که توی برنامه نویسی بتونی به سریع ترین شکل ممکن دو عدد اعشاری رو در هم ضرب کنی باید بدونی که سریع ترین راه استفاده از الگوریتم های بهینه نیست بلکه استفاده از دستورات خود CPU در مورد اعمال اعشاری هست. به طور مثال برای ضرب اعشاری در CPU های کامپیوترهای شخصی از دستور FMUL در زبان اسمبلی استفاده میشه که این سریع ترین روش برای ضرب دو عدد اعشاری بر روی یک کامپیوتر هست. این روش توسط تمامی کامپایلر های جدید پشتیبانی میشه و به همین دلیل سریع ترین روش برای ضرب دو عدد اعشاری در یک زبان برنامه نویسی سطح بالا همون استفاده از عملگر ضرب خود زبان هست. یعنی مثلا در زبان C به راحت ترین شکل نوشتن Value = 1.0 * 2.0 سریع ترین روش برای ضرب دو عدد اعشاری 1 و 2 هم هست.
اما اگه هدفت حل یک تمرین درسی یا کنجکاوی شخصی خودت یا هر چیز دیگه ای هست بهتره هدفت رو بیشتر توضیح بدی تا متناسب با اون بتونیم راهنمایی بهتری کنیم.
-
این که اعشاری ضرب و تقسیم بشه ، بستگی به چند چیز داره :
۱- زبان مورد استفاده
۲- نوع متغیر. مثلا متغیری که برای اعداد صحیح هست مثل تابع جزء صحیح میمونه (کلاس چندمی؟) مثلا فرض میکنم متغیر i از نوع عدد صحیح هست، و وقتی مثلا مقدار 3.233 رو بهش میدی ، اون رو بصورت
[i]=i
فرض میکنه. یعنی جزءصحیح i برابرست با i . ولی اگه از نوع اعشاری باشه، اینطور نیست و میشه i=i .
چه زبانی رو میخوای کار کنی؟ بعضی وقتها به متغیرها هیچ نوعی نسبت داده نمیشه (نمونش Haskell که هم میتونی نوعش رو تعیین کنی و هم بدون تعیین نوع متغیر باهاش کار کنی :) ) این مواقع میشه اعشار بهش داد و ازش خروجی اعشاری گرفت. ولی بعضی وقتها مجبور به تعیین نوع متغیر هستی که اون موقع باید نوعی رو تعیین کنی که اعشار هم قبول کنه (به عنوان ورودی).
:o :o :o :o :o :o :o :o :o :o ](*,) ](*,) ](*,)
اینا که گفتید یعنی چی؟من که هیچی نفهمیدم البته بازم ممنون از توضیحات ولی اگه میشه زیر دیپلم توضیح بدید(سوم تجربی)فعلا واسه کنکور و تمرینات کتاب درسی میخوام البته دارم به صورت لاکپشتی پایتون هم میخونم.ممنو از بقیه دوستان هم.کاش دکمه +1 من فعال میشد.
-
خب فکر کنم ریاضیات تجربی هم جزء صحیح رو داشته باشه ، اگر نداره ، توی مدرسه از دوستانی که ریاضی میخونن کتاب حسابانشون رو بگیر و یا بخواه ازشون جزء صحیح رو برات توضیح بدن.
من توضیحم خیلی کلی بود. این پست هم خیلی خیلی خوب توضیح داد :
سلام
بهتره هدفت از این سوال رو هم بگی تا در صورت امکان بهتر بتونیم بهت کمک کنیم. اگه هدفت اینه که توی برنامه نویسی بتونی به سریع ترین شکل ممکن دو عدد اعشاری رو در هم ضرب کنی باید بدونی که سریع ترین راه استفاده از الگوریتم های بهینه نیست بلکه استفاده از دستورات خود CPU در مورد اعمال اعشاری هست. به طور مثال برای ضرب اعشاری در CPU های کامپیوترهای شخصی از دستور FMUL در زبان اسمبلی استفاده میشه که این سریع ترین روش برای ضرب دو عدد اعشاری بر روی یک کامپیوتر هست. این روش توسط تمامی کامپایلر های جدید پشتیبانی میشه و به همین دلیل سریع ترین روش برای ضرب دو عدد اعشاری در یک زبان برنامه نویسی سطح بالا همون استفاده از عملگر ضرب خود زبان هست. یعنی مثلا در زبان C به راحت ترین شکل نوشتن Value = 1.0 * 2.0 سریع ترین روش برای ضرب دو عدد اعشاری 1 و 2 هم هست.
اما اگه هدفت حل یک تمرین درسی یا کنجکاوی شخصی خودت یا هر چیز دیگه ای هست بهتره هدفت رو بیشتر توضیح بدی تا متناسب با اون بتونیم راهنمایی بهتری کنیم.
و اما در مورد پایتون ، زبان خوبی رو شروع کردی. میتونی با استفاده از اون به جاهای خوبی برسی :)
-
فعلا واسه کنکور و تمرینات کتاب درسی میخوام
اگه هدفت اینه که بتونی محاسبات جبری رو برای کنکور سریع تر انجام بدی بهتره به دنبال الگوریتم های ضرب و تقسیم نباشی بلکه دنبال تکنیک های محاسبات ذهنی سریع بگرد.
کتابهای زیادی در این رابطه نوشته شدن که معمولا مجموعه ای بزرگ از تکنیک های متنوع هستند. اگه چند تا از تکنیک های پراستفاده اونها رو یاد بگیری میتونه باعث افزایش سرعت محاسباتت بشه.
-
الگوریتم که به زبان پیاده سازیش بستگی نداره !
این کارا ترینه برای ضرب
http://en.wikipedia.org/wiki/Multiplication_algorithm
-
ممنون از همگی