با نوشتن برنامهای به زبان C++ که N و سپس دو بردار از اعداد اعشاری را میخواند، حداکثر خطای مطلق (norm بینهایت اختلاف) بین دو بردار را محاسبه و چاپ کنید؛ در کد از تابع std::max از هدر <algorithm> برای بهروزرسانی مقدار بیشینه استفاده کنید.
0.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:08 0.0
روش حل: ابتدا N را بخوانید و دو بردار از نوع double بسازید، سپس با یک حلقه بر آرایهها مقدار مطلق اختلاف هر عضو را با std::abs محاسبه کنید و با std::max (از هدر <algorithm>) بیشینه را بهروز کنید. در محیط محاسبات عددی این مقدار برابر نُرم بینهایت خطاست و برای ارزیابی دقت روشهای عددی کاربرد دارد. نکات: از vector استفاده کنید، هدرهای <algorithm> و <cmath> را درج کنید و برای سرعت ورودی/خروجی میتوانید ios::sync_with_stdio(false) و cin.tie(nullptr) را فعال کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که با استفاده از std::max و std::abs در یک حلقه روی دو بردار، حداکثر تفاضل مطلق بین المانها را محاسبه میکنید. برای کارایی ورودی/خروجی میتوانید با فعالسازی ios::sync_with_stdio(false) و cin.tie(nullptr) سرعت را بهبود دهید و اندازهٔ دو بردار را قبل از پرکردن با reserve یا مقداردهی مستقیم تعیین کنید. ابتدای مقداردهی برای بیشینهٔ تفاضل مطلق را 0 در نظر بگیرید، چون تفاضلهای مطلق همواره غیرمنفی هستند و با هر مقایسهٔ std::max بهروزرسانی میشود. همچنین مطمئن شوید که هدرهای <algorithm> و <cmath> را اضافه میکنید و در محیطهای قدیمیتر میتوانید از std::fabs به جای std::abs برای مقادیر double استفاده کنید.
گزارش