در C++ برنامهای بنویسید که دو آرایهٔ عددی از نوع double با طول n را از ورودی بخواند، یک آرایهٔ خروجی بسازد که در هر ایندکس کمینهٔ عناصر متناظر دو آرایه را با استفاده از std::min نگه دارد و در خروجی مجموع عناصر آرایهٔ خروجی را چاپ کند.
7.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:28 0.0
برای حل این مسئله از و تابع std::min استفاده کنید: ابتدا n را بخوانید، دو وکتور با اندازهٔ n پر کنید، سپس با یک حلقه ساده برای هر ایندکس مقدار std::min(a[i], b[i]) را در وکتور خروجی قرار داده و همزمان جمع را بهروزرسانی کنید. نکات مفید برای محاسبات عددی و عملکرد بالا: از وکتورهای با حافظهٔ متوالی استفاده کنید، ورودیها را با ارجاع const بگیرید تا از کپی جلوگیری شود، حلقهها را ساده نگه دارید و برنامه را با -O2 یا -O3 کامپایل کنید؛ برای بردارهای خیلی بزرگ میتوانید بهینهسازیهای سطح پایینتری مانند استفاده از اشارهگرها یا SIMD را در نظر بگیرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای ورودی سریعتر از ios::sync_with_stdio(false) و cin.tie(nullptr) استفاده کنید و اندازهٔ دو وکتور را با resize همزمان آماده کنید تا از کپیهای غیرضروری جلوگیری شود. بهجای کپیهای بیمورد، دادهها را با ارجاع const به عملیات محاسبه بدهید و حلقهٔ سادهای بنویسید که min(a[i], b[i]) را در خروجی ذخیره و مجموع را بهروزرسانی کند. اگر دقت جمع مهم است، از long double برای جمع استفاده کنید و در پایان نتیجه را به double تبدیل کنید. برای کارایی بیشتر میتوانید با استفاده از اشارهگرها یا فناوریهای SIMD روی مقادیر بسیار بزرگ بهینهسازی کنید.
گزارش