یک تابع در 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 بهره ببرید.

توسط پژوهشگر در 202 روز قبل ساعت 02:25
دسته بندی ها: C Plus Plus C Plus Plus for beginner
nima در 202 روز قبل ساعت 09:47

برای پیاده‌سازی، از دو اینترِتر ورودی استفاده کنید (مثلاً با std::begin/std::end یا دو اینترِتر ابتدای و انتهای بردار) و با std::advance پنجره را به اندازه k جابه‌جا کنید تا میانگین هر پنجره محاسبه شود. برای کارایی از یک جمع متحرک استفاده کنید: نگه داشتن sum و با اضافه کردن عنصر ورودی جدید و کم کردن عنصر خروجی قدیمی، هر مقدار میانگین را به‌روزرسانی کنید و خروجی را در بردار خروجی رزروشده ذخیره کنید. برای صحت، اندازه پنجره را چک کنید (k > 0 و k <= n) و از تولید خروجی نامعتبر جلوگیری کنید. برای انعطاف‌پذیری بیشتر می‌توانید تابع را به صورت template بنویسید تا با انواع اعشاری یا بردارهای دیگر هم کار کند و با استفاده از reserve کارایی را حفظ کنید.

گزارش

1 پاسخ

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

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