یک برنامه C++ بنویسید که یک عدد اعشاری (double) و یک عدد صحیح (int) را از ورودی خوانده و با استفاده از تابع std::ldexp مقدار عدد ضربدر 2 به توان نما را محاسبه و با دقت مناسب چاپ کند.

4.0 بازدید آخرین ویرایش در 203 روز قبل ساعت 02:37

0.0

برای حل این مسئله از هدر و تابع std::ldexp(x, exp) استفاده کنید که به صورت دقیق و کارا مقدار x * 2^exp را محاسبه می‌کند؛ این روش برای مسائل محاسبات عددی و پردازش‌های با کارایی بالا (HPC) بهتر از ضرب کردن با pow(2, exp) است چون خطر سرریز/زیرریز و خطای گردشدگی را کاهش می‌دهد. در توضیح برنامه می‌توانید حالت‌های ویژه مانند NaN یا Inf را با توابعی مثل std::isnan و std::isinf بررسی کرده و خروجی را با std::setprecision قالب‌دهی کنید؛ برای بهبود سرعت در محیط‌های HPC سطح بهینه‌سازی کامپایلر (مثلاً -O2) را در نظر بگیرید.

توسط پژوهشگر در 203 روز قبل ساعت 02:37
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 203 روز قبل ساعت 09:02

نکته مفید: استفاده از std::ldexp(x, exp) دقیق‌تر و با احتمال سرریز کمتر از ضرب با pow(2, exp) است و برای کاربردهای HPC مناسب می‌باشد. برای چاپ نتیجه با دقت مناسب، وجود NaN و Inf را با std::isnan و std::isinf بررسی کنید و خروجی را با std::setprecision قالب‌بندی کنید. دقت کنید که exp می‌تواند به سمت زیر یا بالای بازه‌های شناخته‌شده برود و ldexp در این حالات رفتار استاندارد دارد. در نهایت فعال‌سازی بهینه‌سازی -O2 در کامپایلر می‌تواند سرعت اجرای برنامه را به طور قابل توجهی بهبود دهد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری