یک برنامهٔ 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 یا تکنیک‌هایی مثل جمع‌بندی کاهان برای کاهش خطای عددی بهره ببرید.

توسط پژوهشگر در 202 روز قبل ساعت 02:39
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 202 روز قبل ساعت 08:57

نکتهٔ کلیدی این تمرین استفاده از long double برای جمع و میانگین است تا خطای گرد کردن کاهش یابد. همچنین با استفاده از ios::sync_with_stdio(false) و cin.tie(nullptr) ورودی سریع‌تر می‌شود و حتماً مقدار اولیهٔ accumulate را 0.0L بدهید تا حاصل به long double برسد. اگر n برابر با صفر باشد، محاسبهٔ میانگین منهای تقسیم بر صفر است و باید چک شود. برای داده‌های بسیار بزرگ، می‌توانید از std::transform_reduce با execution::par استفاده کنید تا هم عددی و هم کارایی بهبود یابد.

گزارش

1 پاسخ

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

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