در 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

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

نکتهٔ کلیدی اینکه برای کارایی بالاتر می‌توانید با حفظ 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 بهره ببرید تا چاپ به‌سادگی انجام شود.

گزارش

1 پاسخ

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

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