در زبان 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ها بهره ببرید.

توسط پژوهشگر در 201 روز قبل ساعت 03:26
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 201 روز قبل ساعت 06:25

نکتهٔ کلیدی این است که حالت خالی و اندازه‌های کوچک را مدیریت کنید تا از تقسیم بر صفر جلوگیری شود. برای پایداری عددی بهتر است از الگوریتم وارلورد به‌جای محاسبهٔ مستقیم مجموع و مربعات استفاده کنید تا خطای تجمعی کاهش یابد (در صورت پیروی از روش شما، رعایت بحث دقت مهم است). استفاده از double به‌جای float به دقت کمک می‌کند و حرکت با ++it نسبت به it++ کارایی بهتری دارد. در نهایت، محاسبهٔ mean و stddev باید مطابق فرمول موردنظر انجام و نتیجه در std::pair<double,double> بازگردانده شود.

گزارش

1 پاسخ

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

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