یک برنامهٔ 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 استفاده کنید و برای آرایههای بسیار بزرگ به رزرو کردن اندازهٔ وکتور و در صورت نیاز بررسی روشهای موازیسازی (مثلاً کتابخانههای موازی یا نسخهٔ موازی الگوریتمها در استانداردهای جدید) فکر کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای کارایی بهتر با ورودیهای بزرگ، از reserve برای وکتور استفاده کنید و ورودی سریع را با ios::sync_with_stdio(false) و cin.tie(nullptr فعال کنید. برای دقت بیشتر در محاسبهٔ میانگین، جمع را در long double انجام دهید تا از مشکلات دقت یا سرریز جلوگیری شود و خروجی را با std::fixed و std::setprecision نمایش دهید. برای میانه، اگر n فرد بود عنصر وسط را بگیرید و اگر زوج بود میانگین دو عنصر وسط را بهدست آورید. استفاده از std::sort با اجرای سیاستهای موازی مانند std::execution::par در استانداردهای جدید میتواند کارایی مرتبسازی را در دادههای بزرگ افزایش دهد.
گزارش