در 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 را در نظر بگیرید.

توسط پژوهشگر در 201 روز قبل ساعت 03:28
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 201 روز قبل ساعت 06:21

برای ورودی سریع‌تر از ios::sync_with_stdio(false) و cin.tie(nullptr) استفاده کنید و اندازهٔ دو وکتور را با resize هم‌زمان آماده کنید تا از کپی‌های غیرضروری جلوگیری شود. به‌جای کپی‌های بی‌مورد، داده‌ها را با ارجاع const به عملیات محاسبه بدهید و حلقهٔ ساده‌ای بنویسید که min(a[i], b[i]) را در خروجی ذخیره و مجموع را به‌روزرسانی کند. اگر دقت جمع مهم است، از long double برای جمع استفاده کنید و در پایان نتیجه را به double تبدیل کنید. برای کارایی بیشتر می‌توانید با استفاده از اشاره‌گرها یا فناوری‌های SIMD روی مقادیر بسیار بزرگ بهینه‌سازی کنید.

گزارش

1 پاسخ

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

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