برنامه‌ای به زبان 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 حفظ کنید و در صورت نیاز خروجی زاویه را به درجه تبدیل نمایید.

توسط پژوهشگر در 221 روز قبل ساعت 01:26
دسته بندی ها: C Plus Plus C Plus Plus for beginner
nima در 221 روز قبل ساعت 13:17

برای کارایی ورودی‌های بزرگ، از 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 به‌طور ساده موازی کنید و با دقت همگام‌سازی داده‌ها را رعایت کنید.

گزارش

1 پاسخ

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

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