با استفاده از C++ و تابع std::accumulate در هدر <numeric> یک برنامه بنویسید که مجموعهای از اعداد اعشاری را از ورودی بخواند و مجموع، میانگین و واریانس جمعیت (population variance) آنها را محاسبه و چاپ کند.
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:18 0.0
برای حل این مسئله، اعداد را در یک std::vector ذخیره کنید و برای محاسبه مجموع از std::accumulate با مقدار اولیهٔ 0.0 استفاده کنید تا جمع به صورت double انجام شود، سپس میانگین را با تقسیم بر تعداد عنصرها بهدست آورید. برای واریانس از std::accumulate با یک لامبدا که مجموع مربع انحرافها را محاسبه میکند استفاده کنید یا یک حلقه ساده اجرا کنید؛ در انتها نتیجهٔ واریانس را با تقسیم بر n بهدست آورید. نکات: هدرهای موردنیاز , , , هستند، حتما مقدار اولیهٔ عددی را به صورت اعشاری (مثلاً 0.0) قرار دهید تا از تبدیل ناخواستهٔ نوع جلوگیری شود، برای دادههای بزرگ حافظهٔ پیوسته و انواع double و در پروژههای با نیاز به بهرهوری بالا میتوانید به الگوریتمهای موازی (مثلاً execution policies در C++17 یا OpenMP) فکر کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته: هنگام محاسبه واریانس با std::accumulate مقدار اولیه را 0.0 قرار دهید تا محاسبه با double انجام شود. برای میانگین، n را به double تبدیل کنید تا از تقسیم صحیح جلوگیری شود و اگر ورودی خالی بود از تقسیم بر صفر جلوگیری کنید. برای واریانس میتوانید از accumulate با یک لامبدا استفاده کنید که مربعات انحراف از میانگین را جمع کند، یا از یک حلقه ساده بهره ببرید. اگر دادههای بزرگی دارید، به حافظه پیوسته با استفاده از std::vector و روشهای موازی مانند execution policies در C++17 یا OpenMP فکر کنید.
گزارش