یک برنامهٔ C++ بنویسید که از ورودی یک عدد صحیح n و سپس n عدد اعشاری دریافت کند و با استفاده از std::accumulate مجموع و میانگین این اعداد را محاسبه و چاپ کند.
7.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:39 0.0
برای حل، هدر و کانتینر std::vector را استفاده کنید و از std::accumulate(v.begin(), v.end(), 0.0L) برای جمعزدن عناصر بهره ببرید تا جمع به صورت اعشاری محاسبه شود؛ سپس میانگین را با تقسیم جمع بر n بدست آورید. نکات: از long double برای دقت بیشتر استفاده کنید، ورودی/خروجی را با ios::sync_with_stdio(false) و cin.tie(nullptr) سریعتر کنید، و برای مجموعههای خیلی بزرگ میتوانید در C++17 از std::transform_reduce با execution::par یا تکنیکهایی مثل جمعبندی کاهان برای کاهش خطای عددی بهره ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این تمرین استفاده از long double برای جمع و میانگین است تا خطای گرد کردن کاهش یابد. همچنین با استفاده از ios::sync_with_stdio(false) و cin.tie(nullptr) ورودی سریعتر میشود و حتماً مقدار اولیهٔ accumulate را 0.0L بدهید تا حاصل به long double برسد. اگر n برابر با صفر باشد، محاسبهٔ میانگین منهای تقسیم بر صفر است و باید چک شود. برای دادههای بسیار بزرگ، میتوانید از std::transform_reduce با execution::par استفاده کنید تا هم عددی و هم کارایی بهبود یابد.
گزارش