یک برنامهٔ C++ بنویسید که تعداد n عدد شناور را از ورودی بگیرد و برای هر عددی که در بازهٔ [-1,1] است مقدار قوسسینوس (asin) را با استفاده از std::asin از محاسبه کرده و نتیجه را به درجه چاپ کند و برای مقادیر خارج از بازه پیام خطا نمایش دهد.
3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:31 0.0
برای حل، از هدر و تابع std::asin استفاده کنید؛ برای تبدیل از رادیان به درجه عدد حاصل را در 180.0/π ضرب کنید (π را میتوانید با const double PI = std::acos(-1.0) تعیین نمایید). ورودیها را در یک std::vector ذخیره کنید، برای هر عنصر ابتدا بررسی کنید که در بازهٔ [-1,1] باشد و سپس std::asin را فراخوانی و با std::fixed و std::setprecision دقت خروجی را تنظیم کنید. نکات و ترفندها: برای آرایههای بزرگ ظرفیت وکتور را با reserve تنظیم کنید، میتوان از std::transform یا حلقههای موازی با OpenMP برای افزایش کارایی در زمینههای محاسبات علمی/HPC بهره برد و برنامه را با بهینهسازیهای کامپایلر (-O2 یا -O3) بیازمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
قبل از فراخوانی std::asin مقدار ورودی را با std::clamp(x, -1.0, 1.0) محدود کنید تا از خطای دامنه جلوگیری شود. برای کارایی، اندازه n را در std::vector با reserve پیشبینی کنید و میتوانید با std::transform و lambdaای ساده مقدار هر عدد را به درجه تبدیل کنید. برای تبدیل از رادیان به درجه از 180.0/π استفاده کنید و π را با const double PI = std::acos(-1.0) بدست آورید و خروجی را با std::fixed و std::setprecision مطلوب چاپ کنید. اگر دادههای بزرگی دارید، میتوانید کار را با OpenMP موازی کنید و کامپایلر را با -O2 یا -O3 آزمایش کنید.
گزارش