در C++ تابعی قالبی بنویسید که با استفاده از iteratorها و هدر میانگین متحرک (moving average) با طول پنجره k را برای هر کانتینر عددی محاسبه و نتیجه را در یک std::vector برگرداند.

6.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:56

0.0

راه حل: تابع را به صورت قالبی بنویسید که یا یک کانتینر یا جفت Iterator (begin, end) بگیرد؛ از هدرهای و همراه با std::next، std::distance و std::accumulate استفاده کنید تا برای هر پنجره طول k مجموع را محاسبه و میانگین را در یک std::vector ذخیره کنید. نکات و ترفندها: ورودی‌های نامعتبر مثل k

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

ورودی k باید مثبت باشد و کوچکتر یا مساوی طول بازه کانتینر باشد؛ در صورت نامعتبر بودن می‌توان استثناء پرتاب کرد یا خروجی خالی برگرداند. تابع باید یا کانتینر یا جفت ایتر begin/end را بپذیرد و با استفاده از std::next و std::distance ایمنی را حفظ کند تا برای هر پنجره به اندازه k، مجموع با std::accumulate محاسبه و میانگین در یک std::vector ذخیره شود. برای کارایی بهتر می‌توانید با نگهدار جمع جاری پنجره و به‌روزرسانی آن با هر گام، زمان را به O(n) برسانید، هرچند استفادهٔ صریح از accumulate برای هر پنجره ساده‌تر است. در نهایت، ورودی‌های نامعتبر یا کانتینر خالی باید به‌طور مناسب مدیریت شوند تا رفتار تابع مشخص و قابل پیش‌بینی باشد.

گزارش

1 پاسخ

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

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