یک تابع در C++ بنویسید که میانگین متحرک (moving average) با طول پنجره k را روی یک بردار از اعداد اعشاری با استفاده از iteratorهای موجود در هدر محاسبه کرده و بردار نتایج را بازگرداند.
1.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:25 0.0
از کتابخانه استاندارد C++ و هدرهای و (و در صورت نیاز ) استفاده کنید؛ با دریافت دو iterator برای شروع و پایان بردار ورودی یا با استفاده از std::begin/std::end، یک پنجره با طول k را با کمک std::advance جابجا کنید و میانگین هر پنجره را محاسبه کرده و در بردار خروجی ذخیره کنید. نکات: برای بازدهی میتوانید از جمع متحرک (حذف عنصر خروجی و افزودن عنصر ورودی) استفاده کنید، از چک کردن شرایط مرزی مثل ksize مطمئن شوید و برای بردارها از iteratorهای random-access بهره ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی، از دو اینترِتر ورودی استفاده کنید (مثلاً با std::begin/std::end یا دو اینترِتر ابتدای و انتهای بردار) و با std::advance پنجره را به اندازه k جابهجا کنید تا میانگین هر پنجره محاسبه شود. برای کارایی از یک جمع متحرک استفاده کنید: نگه داشتن sum و با اضافه کردن عنصر ورودی جدید و کم کردن عنصر خروجی قدیمی، هر مقدار میانگین را بهروزرسانی کنید و خروجی را در بردار خروجی رزروشده ذخیره کنید. برای صحت، اندازه پنجره را چک کنید (k > 0 و k <= n) و از تولید خروجی نامعتبر جلوگیری کنید. برای انعطافپذیری بیشتر میتوانید تابع را به صورت template بنویسید تا با انواع اعشاری یا بردارهای دیگر هم کار کند و با استفاده از reserve کارایی را حفظ کنید.
گزارش