در زبان C++ و با استفاده از هدر <iterator> یک تابع بنویسید که یک std::vector<double> را که مختصات یکبعدی ذرات در یک شبیهسازی عددی یا موقعیتهای یک شاخص در بازی را نشان میدهد با استفاده از Iterator پیمایش کرده و میانگین و انحراف معیار دادهها را بهصورت std::pair<double,double> بازگرداند.
11.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:26 0.0
برای حل این مسئله از کانتینر std::vector و توابع آغاز و پایان آن (begin/end) استفاده کنید و با یک حلقهٔ مبتنی بر Iterator (مثلاً for(auto it = v.begin(); it != v.end(); ++it)) مجموع و مجموع مربعات را محاسبه کنید، سپس میانگین = مجموع / n و انحراف معیار = sqrt((sum_sq / n) - mean*mean) را بدست آورید. هدرهای پیشنهادی: <vector>، <iterator>، <cmath> و در صورت نیاز <numeric>، و حتماً حالت بردار خالی را بررسی کنید؛ از نوع double برای دقت بهتر استفاده کنید و از ++it برای حرکت بین Iteratorها بهره ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که حالت خالی و اندازههای کوچک را مدیریت کنید تا از تقسیم بر صفر جلوگیری شود. برای پایداری عددی بهتر است از الگوریتم وارلورد بهجای محاسبهٔ مستقیم مجموع و مربعات استفاده کنید تا خطای تجمعی کاهش یابد (در صورت پیروی از روش شما، رعایت بحث دقت مهم است). استفاده از double بهجای float به دقت کمک میکند و حرکت با ++it نسبت به it++ کارایی بهتری دارد. در نهایت، محاسبهٔ mean و stddev باید مطابق فرمول موردنظر انجام و نتیجه در std::pair<double,double> بازگردانده شود.
گزارش