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