اولین باره که به کاهو میای؟ راهنمای سایت رو حتما بخون!

ورود ثبت‌نام راهنما درباره‌ی کاهو
پرسش‌ها برچسب‌ها کاربر‌ها سوال بپرسید!

آمار پرسش:

  • پرسیده شده: 2016-06-20 08:25:50 -0500
  • مشاهده شده: 262 بار
  • بروز شده: 2016-06-22 04:48:22 -0500

نکاتی در مورد نوشتن پاسخ:

در این قسمت می‌تونی به یک پرسش پاسخ بدی. اگه می‌خوای در مورد پرسش بحث و اظهار نظر کنی از قسمت «ثبت نظر» استفاده کن.
پاسخت رو دقیق و کامل بنویس، از عکس استفاده کن و اگه لازمه به منابع (کتاب یا سایت) ارجاع بده.
اگه پرسش یا پاسخ‌ها مفید هستند حتما بهشون رای بده تا پرسش‌ها و پاسخ‌های خوب مشخص بشن.

استفاده از ویرایشگر:

توی قسمت پیش‌نمایش می‌تونی ببینی متنی که نوشتی چجوری روی سایت دیده میشه.
خیلی مهم: برای اینکه به خط بعد بری باید دوتا Enter بزنی.
می‌تونی از تگ‌های معمولی و ساده‌ی html هم استفاده کنی.
با دکمه‌هایی که بالای ویرایش‌گر قرار دارند کلی کار می‌شه کرد. از عکس‌گذاشتن بگیر تا لیست شماره‌دار. حتما امتحان‌شون کن.

علائم ریاضی:

برای نوشتن علائم ریاضی می‌تونی از Mathjax استفاده کنی. راهنمای Mathjax رو از سایت math.stackexchange بخون.
برای نوشتن عبارت ریاضی وسط جمله، اون عبارت رو بین دوتا $ قرار بده.
برای نوشتن عبارت ریاضی تو یه خط جدید اون رو بین دوتا $$ قرار بده.

pow(5,2) =strange 24!!!!!!!!!!!!!!!!!!!

0

کسی میدونه چرا تابع pow تو code::blocks برا 5 ب توان 2 جواب 24 میده ؟ البته اول تو ی متغیر ذخیره کنین بعدش چاپ کنین

2016-06-20 08:25:50 -0500
کد تراش 57 ● 1 ● 4 ● 10
پاک‌کردن   ویرایش سوال
نظرات

کامپایلر چون نقش کد ننمود راست * کدشکن کامپایلرشکستن خطاست :)

2016-06-23 10:28:23 -0500 حسن آقا حسینی قشنگه

:)))))))))

2016-06-24 11:17:28 -0500 عطا

سلام میگم یک سر به سایت www.fanavard.ir بزنید. مسابقات برنامه نویسی شون شروع شده. گواهی رسمی از طرف دانشگاه شریف می ده. 50 تا سکه هم جایزشه

2016-10-26 08:17:27 -0500 امیر شکری

2 پاسخ

5

بخاطر این که pow یه تابعه که دو تا double میگیره وخطا داره مثلن همینی که میگی رو میده 24.9999999 بعد اینو بریزی تو int بعد چاپ کنی round به پایین میشه میشه 24 خراب میشه :)

2016-06-20 10:19:07 -0500
حمیدرضاه 2979 ● 20 ● 26 ● 52
پاک‌کردن   ویرایش پاسخ
نظرات

ینی چی دو تا double میگیره و میده 24.9999999 چرا واسه بقیه اعداد درسته پس مثلا برا 6 ب توان دو همون 36 رو میاره

2016-06-21 15:52:36 -0500 کد تراش

برا اون مثلن به دست میاره 36.000001

2016-06-24 03:40:33 -0500 حمیدرضاه
3

با اجازه اقا حمیدرضا.خواستم کامنت بزارم دیدم زیاد شد مجبور شدم جواب بنویسم.

خوب double یعنی متغیر اعشاری .وقتی شما با اعدا صحیح کار می کنید جواب همیشه یه مقدار مشخص و ثابته که معلومه.اما وقتی حرف از اعداد اعشاری میشه بحث تقریب میاد وسط.یعنی وقتی شما یه عدد اعشاری رو به توان یه عدد اعشاری میرسونید دیگه محاسبه جواب کار ساده ای نیست و نمیشه از روش های معمول برای توان رسانی اعداد صحیح استفاده کرد و از روش های خاص خودش و تقریب های خاص خودش استفاده میشه.

حال اینکه آرگومانهای تابع pow موجود در c++ double هستند یعنی این تابع توان رسانی اعداد اعشاری رو انجام میده.قطعا در چنین حالتی هیچ وقت هیچ جایی نمیگن که چنین جوابی رو به صورت کاملا دقیق انجام بدید به همین خاطر ممکنه جوابی که این تابع میده با جواب اصلی در یه مقدار خیلی کم تفاوت داشته باشه.خیلی هم اهمیت نداره که جواب مثلا ۱۰^(-۹) تا کمتر یا بیشتر باشه.

مشکل وقتی پیش میاد که شما از این تابع برای محاسبه توان رسانی صحیح استفاده کنید و این تقریب اندک یک واحد جواب رو جابجا نشون بده.

و این که انتظار نداشته باشید همیشه اشتباه بشه جواب!!خوب یه وقتایی ممکنه به جایی این که جواب این تابع کمتر از جواب اصلی باشه بیشتر و یا مساوی باشه و مشکلی پیش نیاد.:دي

در اخر اینکه برای رفع مشکل میتونید تابع Pow رو برای محساسبه توان رسانی صحیح خودتون به شیوه بازگشتی بنویسید:

A به توان B :

اگه ‌‌B یک باشه که میشه A(صفرم باشه میشه ۱)

در غیر این صورت

اگه B زوج بود میشه A*A به توان B/2

و اگه فرد بود میشه (A*A به توان B/2) ضربدر A

خیلی زیاد شد!!امیدوارم مفید واقع بشه:دي

2016-06-22 04:48:22 -0500
کنکوری 1683 ● 13 ● 27 ● 40
پاک‌کردن   ویرایش پاسخ

پاسخ شما

فقط در صورتی که پاسخی برای این پرسش دارید، آن را اینجا بنویسید و برای بحث کردن از قسمت «ثبت‌ نظر» استفاده کنید. شما می‌توانید قبل از وارد شدن به سایت پاسخ خود را بنویسید. این پاسخ ذخیره می‌شود و زمانی که شما وارد سایت شدید یا ثبت‌نام کردید منتشر می‌شود.

پیش‌نمایش:

کلیه‌ی حقوق این سایت متعلق به کمیته‌ی ملی المپیاد کامپیوتر است.