با استفاده از iteratorها و توابع موجود در ، یک تابع C++ بنویسید که میانگین متحرک (moving average) با طول پنجره k را روی یک std::vector محاسبه کرده و بردار نتایج را برگرداند تا برای هموارسازی سیگنالها در محاسبات عددی یا بهروزرسانی موقعیتها در بازیها قابل استفاده باشد.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:45 0.0
برای حل، از iteratorهای std::vector بهجای ایندکس عددی استفاده کنید و از توابعی مانند std::next، std::advance و std::distance (در ) برای تعیین انتهای هر پنجره بهره ببرید؛ برای جمع عناصر هر پنجره میتوانید از std::accumulate (در ) استفاده کنید یا اگر میخواهید بهینهتر باشد یک جمع متحرک نگه دارید تا در هر گام با افزودن عنصر جدید و کم کردن عنصر خارجشده، مقدار را بهروزرسانی کنید. نکات: ورودیها را برای k>0 و k
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته مفید: با استفاده از iteratorها بجای اندیسگذاری، کد تمیزتر و امنتری مینویسید و انعطاف بیشتری برای کار با vector خواهید داشت. برای تعیین پایان هر پنجره میتوانید از std::next یا std::advance استفاده کنید و از std::distance برای بررسی اندازه پنجره بهره ببرید؛ یا بهینهتر، جمع متحرک نگه دارید تا با افزودن عنصر جدید و کمکردن خروجی به سرعت به نتیجه برسید. به یاد داشته باشید که k>0 و k≤ اندازه ورودی باشد تا از خطاهای مرزی جلوگیری شود. همچنین میتوانید خروجی را با reserve(n-k+1) پیشانتخاب کنید تا عملکرد حافظه بهتر شود.
گزارش