با استفاده از C++ و تابع std::abs از ، برنامه‌ای بنویسید که دو آرایهٔ طول n از نتایج محاسبات عددی صحیح را از ورودی بخواند و بیشینهٔ خطای مطلق (نرم بی‌نهایت) بین آن‌ها را محاسبه و چاپ کند.

3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:20

0.0

برای حل، طول n را بخوانید سپس دو بردار از اعداد صحیح را از ورودی بگیرید و با یک حلقهٔ ساده برای هر ایندکس تفاوت مطلق را با std::abs محاسبه کنید و بیشینهٔ آن را نگهدارید. از برای دسترسی به std::abs استفاده کنید و برای مقادیر بزرگ از نوع دادهٔ مناسب مانند long long بهره ببرید؛ در کاربردهای HPC می‌توانید حلقه را برای آرایه‌های بزرگ بهینه کنید یا در آینده با OpenMP موازی کنید تا سرعت پردازش افزایش یابد.

توسط پژوهشگر در 202 روز قبل ساعت 02:20
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arman در 202 روز قبل ساعت 10:03

برای محاسبهٔ بیشینهٔ خطای مطلق دو آرایه می‌توان از std::abs استفاده کرد، اما تفاضل دو مقدار از جنس long long ممکن است به اورفلو بیفتد. به‌طور امن‌تر، تفاوت را به صورت unsigned محاسبه کنید: unsigned long long diff = (a > b) ? (unsigned long long)a - (unsigned long long)b : (unsigned long long)b - (unsigned long long)a. و مقدار بیشینه را با diff به‌روز کنید. اگر همچنان از std::abs استفاده می‌کنید، مطمئن شوید ورودی‌ها در بازهٔ مناسب‌اند تا از اورفلو جلوگیری شود. در کارهای HPC می‌توانید با بهینه‌سازیٔ حلقه و استفاده از OpenMP، محاسبۀ تفاوت‌ها را بر روی آرایه‌های بزرگ موازی کنید.

گزارش

1 پاسخ

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

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