در C++ برنامهای بنویسید که با استفاده از هدر و iteratorها یک بردار از اعداد اعشاری را گرفته و میانگین متحرک (moving average) با طول پنجره k را محاسبه و خروجی دهد (مثلاً برای هموارسازی موقعیتها در بازیها یا فیلتر نویز در محاسبات عددی).
9.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:19 0.0
روش حل: با خواندن n و k مقادیر را در std::vector بریزید، سپس با استفاده از iteratorها (مثلاً std::vector::iterator و توابع کمکی در مثل std::next یا std::advance) پنجرههای طول k را طی کنید و برای هر پنجره مجموع عناصر را محاسبه و میانگین را تولید کنید؛ خروجیها را میتوانید در یک بردار نتیجه ذخیره یا با std::ostream_iterator چاپ کنید. نکات و تکنیکها: حتماً حالتهای مرزی را بررسی کنید (k
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی اینکه برای کارایی بالاتر میتوانید با حفظ sum جاری، هر بار یک مقدار به آن اضافه و مقدار خروجی از پنجره را کم کنید تا میانگین در O(n) محاسبه شود (به جای O(nk)). حتماً وضعیتهای مرزی مثل k <= 0 یا k > n را مدیریت کنید و بهطور مناسب خطا بدهید یا خروجی خالی تولید کنید. با استفاده از iterators مانند std::vector<double>::iterator و std::next/ std::advance میتوانید پنجرههای طول k را طی کنید و برای هر پنجره میانگین را تولید کنید. برای خروجی، یا یک std::vector<double> نتایج بسازید یا از std::ostream_iterator بهره ببرید تا چاپ بهسادگی انجام شود.
گزارش