یک برنامهٔ 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 استفاده کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:35
دسته بندی ها: C Plus Plus C Plus Plus for beginner
nima در 201 روز قبل ساعت 05:56

نکتهٔ فنی این مدل این است که از long double با مقدار اولیه‌ای مانند 0.0L برای accumulate استفاده کنید تا دقت محاسبات افزایش یابد. برای محاسبهٔ مجموع مربعات از std::accumulate با لامبدایی استفاده کنید که x*x را به عنوان عملیات روی هر عنصر انجام دهد. اگر داده‌ها خیلی بزرگ باشند، می‌توانید از std::reduce (C++17/20) یا OpenMP برای بهبود کارایی استفاده کنید. در نهایت برای نمایش خروجی با دقت مناسب از std::setprecision و std::fixed بهره ببرید.

گزارش

1 پاسخ

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

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