با استفاده از 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

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

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

گزارش

1 پاسخ

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

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