یک تابع C++ بنویسید که یک std::vector<std::pair> از موقعیتهای دوبعدی دریافت کرده و با استفاده از iteratorهای موجود در هدر (مثل std::distance یا std::next) مرکز جرم (میانگین x و y) همه موقعیتها را محاسبه و بهصورت یک std::pair برگرداند؛ از دسترسی مستقیم با ایندکس استفاده نکنید و حالت بردار خالی را مدیریت کنید.
11.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 00:08 0.0
برای حل، از همراه با std::begin و std::end برای گرفتن iterator شروع و پایان استفاده کنید، سپس با حرکت دادن iteratorها مقادیر x و y را جمع کنید و از std::distance برای بهدستآوردن تعداد عناصر استفاده کنید تا میانگینها را محاسبه کنید. نکات: جمعها را با double نگه دارید، اگر بردار خالی بود یک مقدار معقول مانند {0.0,0.0} یا خطا برگردانید، و در حین پیمایش به اعضای pair با it->first و it->second دسترسی داشته باشید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای این تابع میتوانید با std::begin و std::end شروع کنید و با iteratorها (it->first و it->second) مجموع x و y را در نوع double نگه دارید. تعداد عناصر را با std::distance بهدست بیاورید و قبل از تقسیم بررسی کنید که وکتور خالی نباشد؛ در صورت خالی بهتر است std::optional<std::pair<double,double>> برگردانید یا مقدار معقولی مثل {0.0,0.0}، نه تقسیم بر صفر. برای دقت بالاتر در مجموعههای بزرگ میتوانید از الگوریتمهایی مانند Kahan summation یا استفاده از std::accumulate با lambda استفاده کنید و از دسترسی ایندکسمحور خودداری کنید.
گزارش