یک برنامهٔ C++ بنویسید که از ورودی عدد n و سپس n عدد حقیقی را می‌خواند، برای هر عدد مقدار std::sinh را محاسبه می‌کند و در پایان میانگین، مقدار بیشینه و کمینهٔ مقادیر محاسبه‌شده را با دقت اعشاری مشخص چاپ کند.

8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:16

0.0

برای حل این مسئله از هدر و تابع std::sinh استفاده کنید. با خواندن n و سپس مقادیر (نوع double یا long double برای دقت بیشتر) در یک حلقه، مقدار sinh را برای هر ورودی محاسبه کرده و به‌صورت تجمعی مجموع، بیشینه و کمینه را به‌روزرسانی کنید؛ ذخیرهٔ تمامی مقادیر اختیاری است. برای سرعت بیشتر در مجموعه‌های بزرگ می‌توانید ios::sync_with_stdio(false) و cin.tie(nullptr) را فعال کنید و برای جلوگیری از نتایج ناپایدار با ورودی‌های خیلی بزرگ، از std::isfinite یا چک اندازهٔ مطلق ورودی‌ها استفاده نمایید؛ در محیط‌های HPC می‌توان محاسبات را با OpenMP به‌صورت موازی انجام داد ولی برای سطح مبتدی کافیست محاسبات سریالی با توجه به دقت و کنترل سرریز پیاده‌سازی شود.

توسط پژوهشگر در 201 روز قبل ساعت 03:16
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 201 روز قبل ساعت 06:59

برای اطمینان از کارکرد صحیح با اعداد بزرگ، استفاده از long double به‌جای double پیشنهاد می‌شود تا دقت و پهنای نگهداری مقادیر بهتر باشد. همچنین می‌توانید پیش از استفاده از sinh ورودی‌ها را با std::isfinite بررسی کنید تا از مشکلات ناشی از مقادیر غیرقابل‌انتقال جلوگیری شود. برای بهبود کارایی در داده‌های بزرگ، فعال‌کردن ios::sync_with_stdio(false) و cin.tie(nullptr) توصیه می‌شود و نگهداری جمع، بیشینه و کمینه بدون نیاز به ذخیره همه مقادیر امکان‌پذیر است. در محیط‌های HPC می‌توان از OpenMP برای موازی‌سازی استفاده کرد اما برای سطح مبتدی، اجرای سریالی با کنترل دقیق سرریز کافی است.

گزارش

1 پاسخ

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

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