برنامهای به زبان C++ بنویسید که مختصات دکارتی N نقطه را از ورودی خوانده و برای هر نقطه بردار فاصله r و زاویه θ نسبت به محور x را با استفاده از std::atan2 محاسبه و خروجی دهد.
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:26 0.0
برای حل، مقادیر x و y را به صورت double بخوانید و در یک حلقه برای هر نقطه از std::atan2(y, x) برای محاسبهٔ زاویه (در رادیان، بازه [-π, π]) استفاده کنید و برای محاسبهٔ فاصله از std::hypot(x, y) یا sqrt(x*x + y*y) بهره ببرید؛ برای مجموعههای بزرگ ورودی از ios::sync_with_stdio(false) و reserve برای بردارها استفاده کنید تا کارایی بهتر شود و در صورت نیاز به پردازش موازی (HPC) میتوان حلقهٔ محاسبات را با OpenMP بهطور ساده موازیسازی کرد؛ دقت عددی را با نوع double حفظ کنید و در صورت نیاز خروجی زاویه را به درجه تبدیل نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای کارایی ورودیهای بزرگ، از ios::sync_with_stdio(false) و cin.tie(nullptr) استفاده کنید و اندازهٔ بردارهای x و y را با reserve پیشبینی کنید. زاویه بهدستآمده با std::atan2(y, x) در بازهٔ [-π, π] است و اگر به درجه نیاز دارید، مقدار را ضربدر 180.0/π تبدیل کنید. فاصلهٔ r میتواند با std::hypot(x, y) محاسبه شود یا با sqrt(x*x + y*y)، با حفظ بالاترین دقت در double. برای مجموعههای بزرگ و برخی کاربردهای HPC، میتوانید حلقهٔ محاسبات را با OpenMP بهطور ساده موازی کنید و با دقت همگامسازی دادهها را رعایت کنید.
گزارش