یک برنامهٔ C++ بنویسید که با خواندن یک عدد n و سپس n عدد اعشاری، با استفاده از std::accumulate مجموع، میانگین و مجموع مربعات عناصر بردار را محاسبه کرده و نتایج را با دقت اعشاری مناسب چاپ کند.
8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:35 0.0
برای حل این مسئله از یک std::vector برای ذخیرهٔ ورودیها استفاده کنید و برای محاسبهٔ مجموع از std::accumulate (هدر ) با مقدار اولیهٔ مناسب (مثلاً 0.0L برای افزایش دقت) بهره ببرید؛ مجموع مربعات را میتوانید با std::accumulate و یک lambda که هر عنصر را به توان دو میبرد بدست آورید و میانگین را با تقسیم مجموع بر n حساب کنید. برای دقت بهتر در محاسبات عددی از نوع long double در انباشت استفاده کنید و در صورت نیاز برای دادههای خیلی بزرگ میتوانید اشارهای به الگوریتمهای موازیتر مثل std::reduce (C++17/C++20) یا OpenMP برای محیطهای HPC داشته باشید؛ همچنین برای نمایش دقیق خروجی از و std::setprecision استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ فنی این مدل این است که از long double با مقدار اولیهای مانند 0.0L برای accumulate استفاده کنید تا دقت محاسبات افزایش یابد. برای محاسبهٔ مجموع مربعات از std::accumulate با لامبدایی استفاده کنید که x*x را به عنوان عملیات روی هر عنصر انجام دهد. اگر دادهها خیلی بزرگ باشند، میتوانید از std::reduce (C++17/20) یا OpenMP برای بهبود کارایی استفاده کنید. در نهایت برای نمایش خروجی با دقت مناسب از std::setprecision و std::fixed بهره ببرید.
گزارش