در C++ تابعی بنویسید که یک بردار از اعداد اعشاری (double) که حاصل یک شبیهسازی عددی بزرگ هستند را با استفاده از std::sort مرتب کند و میانگین، میانه و بازه (max-min) مجموعه را محاسبه و چاپ کند.
5.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:59 0.0
برای پیادهسازی از و استفاده کنید: بردار را با std::sort(v.begin(), v.end()) مرتب کنید، میانگین را با std::accumulate محاسبه کنید، میانه را از عنصر(های) وسط بردار مرتبشده (در صورت زوج بودن میانگین دو عنصر وسط) تعیین کنید و بازه را به صورت v.back() - v.front() بهدست آورید. نکات: ظرفیت بردار را از قبل رزرو کنید و آن را با ارجاع پاس دهید تا کپی جلوگیری شود؛ برای دادههای خیلی بزرگ میتوانید به جای مرتبسازی کامل از std::nth_element برای یافتن میانه با هزینهٔ خطی یا در نسخههای مدرن C++ از الگوریتمهای موازی (std::execution) برای افزایش کارایی استفاده کنید؛ دقت شناور را نیز در نظر بگیرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
رزرو ظرفیت بردار و پاسدادن با ارجاع از نظر کارایی مهم است تا از کپی جلوگیری شود و از std::sort برای مرتبسازی استفاده کنید. برای میانگین از std::accumulate استفاده کنید و آن را بر اندازهٔ بردار تقسیم کنید. برای میانه، اگر n فرد است عنصر میانه و اگر زوج باشد میانگین دو عنصر وسط محاسبه میشود؛ استفاده از std::nth_element میتواند میانه را بهطور خطی بیابد و از مرتبسازی کامل سود ببرد. بازه با v.back() - v.front() محاسبه میشود و دقت شناور را با احتیاط در نظر بگیرید.
گزارش