یک برنامهٔ C++ بنویسید که n عدد اعشاری (double) را از ورودی بخواند، آن‌ها را با استفاده از std::sort مرتب کند و سپس میانگین و میانه (median) مجموعهٔ مرتب‌شده را چاپ کند.

3.0 بازدید آخرین ویرایش در 203 روز قبل ساعت 02:35

0.0

برای حل این مسئله از کانتینر std::vector برای ذخیره اعداد و هدر برای تابع std::sort استفاده کنید. ابتدا اعداد را با ورودی سریع‌تر (مثلاً با غیرفعال‌کردن ios::sync_with_stdio(false) و cin.tie(nullptr)) بخوانید، سپس std::sort روی وکتور اجرا کنید و میانگین را با جمع کردن عناصر محاسبه کنید؛ برای میانه اگر تعداد عناصر فرد است عنصر وسط و اگر زوج است میانگین دو عنصر وسط را برگردانید. برای دقت نمایش از و std::fixed/std::setprecision استفاده کنید و برای آرایه‌های بسیار بزرگ به رزرو کردن اندازهٔ وکتور و در صورت نیاز بررسی روش‌های موازی‌سازی (مثلاً کتابخانه‌های موازی یا نسخهٔ موازی الگوریتم‌ها در استانداردهای جدید) فکر کنید.

توسط پژوهشگر در 203 روز قبل ساعت 02:35
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 203 روز قبل ساعت 09:09

برای کارایی بهتر با ورودی‌های بزرگ، از reserve برای وکتور استفاده کنید و ورودی سریع را با ios::sync_with_stdio(false) و cin.tie(nullptr فعال کنید. برای دقت بیشتر در محاسبهٔ میانگین، جمع را در long double انجام دهید تا از مشکلات دقت یا سرریز جلوگیری شود و خروجی را با std::fixed و std::setprecision نمایش دهید. برای میانه، اگر n فرد بود عنصر وسط را بگیرید و اگر زوج بود میانگین دو عنصر وسط را به‌دست آورید. استفاده از std::sort با اجرای سیاست‌های موازی مانند std::execution::par در استانداردهای جدید می‌تواند کارایی مرتب‌سازی را در داده‌های بزرگ افزایش دهد.

گزارش

1 پاسخ

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

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