برنامه‌ای به زبان C++ بنویسید که n عدد اعشاری را از ورودی بخواند، برای هر عدد مقدار سینوس هذلولوی (sinh) را با استفاده از std::sinh محاسبه کند و مقادیر محاسبه‌شده را همراه با میانگین و بیشینه‌شان با دقت 1e-6 نمایش دهد.

22.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 05:31

0.0

برای حل، از هدر و تابع std::sinh برای محاسبه sinh هر عدد استفاده کنید، مقادیر را در std::vector ذخیره کرده و با یک حلقه مجموع و بیشینه را محاسبه کنید؛ خروجی را با std::cout و std::fixed و std::setprecision(6) چاپ کنید. برای سرعت بیشتر در مجموعه‌های بزرگ، std::ios::sync_with_stdio(false) و std::cin.tie(nullptr) را فعال کنید و از std::vector::reserve برای جلوگیری از تخصیص‌های مکرر استفاده نمایید. نکته‌های عددی: برای ورودی‌های خیلی بزرگ ممکن است overflow رخ دهد—می‌توانید قبل از محاسبه محدوده ورودی را بررسی یا با std::isfinite نتایج را کنترل کنید؛ در محیط‌های HPC می‌توان محاسبات را با OpenMP یا الگوریتم‌های موازی استاندارد شتاب داد اما برای سطح مبتدی حلقه ساده و بهینه‌سازی I/O کافی است.

توسط پژوهشگر در 198 روز قبل ساعت 05:31
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 198 روز قبل ساعت 05:32

برای کاهش خطای تجمعی در محاسبه مجموع مقادیر sinh از نوع long double یا الگوریتم جمع‌بندی Kahan استفاده کنید تا دقت بالاتر شود. قبل از فراخوانی std::sinh محدوده ورودی را بررسی کرده یا پس از محاسبه با std::isfinite نتیجه را کنترل کنید تا از overflow یا NaN جلوگیری شود. برای داده‌های بزرگ از v.reserve(n) و ios::sync_with_stdio(false) / cin.tie(nullptr) استفاده کنید تا تخصیص و I/O بهینه شوند. اگر نیاز به شتاب بیشتر دارید می‌توانید حلقه محاسبات را با OpenMP یا الگوریتم‌های موازی استاندارد موازی‌سازی کنید.

گزارش

1 پاسخ

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

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