یک تابع 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 دسترسی داشته باشید.

توسط پژوهشگر در 198 روز قبل ساعت 00:08
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arman در 198 روز قبل ساعت 00:09

برای این تابع می‌توانید با 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 استفاده کنید و از دسترسی ایندکس‌محور خودداری کنید.

گزارش

1 پاسخ

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

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