با استفاده از iteratorهای موجود در هدر <iterator> در C++، تابعی بنویسید که یک std::vector از امتیازات بازی یا دادههای شبیهسازی را بگیرد و میانگین متحرک با طول پنجره k را محاسبه کرده و نتیجه را بهصورت std::vector برگرداند.
13.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:28 0.0
در C++ از هدرهای و (و در صورت نیاز ) استفاده کنید؛ با iteratorها از begin تا end پیمایش کنید و برای هر پنجره از std::next یا std::advance برای تعیین انتهای پنجره بهره ببرید و با std::accumulate مجموع را محاسبه کنید یا برای بهبود کارایی یک جمع متحرک (running sum) با استفاده از iteratorها نگهداری کنید؛ نتایج را با std::back_inserter در یک std::vector خروجی وارد کنید. نکات: ورودیهای نامعتبر مانند ksize را بررسی کنید و نوع دادهٔ شناور (double) را برای دقت در محاسبات علمی در نظر بگیرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
قبل از هر چیز k را چک کنید (k>0 و k<=input.size()) و برای ورودیهای نامعتبر رفتار مشخص (مثلاً بازگرداندن وکتور خالی یا پرتاب استثنا) تعریف کنید. برای کارایی از جمع متحرک با iteratorها استفاده کنید: ابتدا مجموع اولین پنجره را با std::accumulate روی بازه begin تا std::next(begin,k) محاسبه کرده و سپس با advance یا ++ iterator مرزها را جابجا کرده و مجموع را بهروزرسانی کنید. نتایج را با std::back_inserter و نوع شناور double وارد کنید تا دقت حفظ شود. اگر حساسیت عددی بالاست از long double یا الگوریتمهای پایدارتر جمع استفاده کنید.
گزارش