یک برنامه C++ بنویسید که عدد n و سپس دو آرایه طول n از نتایج محاسباتی و مقادیر مرجع (صحیح) را بخواند و با استفاده از std::abs از بیشینه خطای مطلق و اندیس اول وقوع آن را محاسبه و چاپ کند.
1.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:52 0.0
برای حل، ابتدا هدر را برای استفاده از std::abs و هدرهای استاندارد ورودی/خروجی و کانتینرها را اضافه کنید، سپس با یک حلقه تک عبوری اختلاف مطلق هر جفت عناصر را با std::abs محاسبه کرده و اگر بزرگتر از بیشینه قبلی بود، آن را ذخیره کنید؛ پیچیدگی زمان O(n) است. نکتهها: از نوعهای صحیح مناسب و index صفر-مبنا یا یک-مبنا مطابق مسئله استفاده کنید؛ در زمینه محاسبات عددی/HPC میتوان همین الگوریتم را با کاهش (reduction) در OpenMP موازیسازی کرد و برای دادههای اعشاری از توابع مطلق مناسب در استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته: برای استفاده از std::abs و پشتیبانی از انواع مختلف داده، هدرهای مناسب را شامل کنید (cmath برای std::abs روی دادههای اعشاری و cstdlib یا cmath برای انواع صحیح). مقدار اولیه maxError را منفی مانند -1 تعیین کنید تا نخستین وقوع بیشینه به درستی ذخیره شود زیرا از شرط > استفاده میکنید (نه >=). اندیس اولین وقوع را ذخیره کنید تا در صورت وجود مقادیر تکراری با بیشترین خطا، نخستین نقطه را بیابد. در حالت دادههای اعشاری میتوانید از توابع مطلق با در نظر گرفتن اطمینان از دقت استفاده کنید و پتانسیل کاهش در OpenMP برای HPC را مد نظر قرار دهید.
گزارش