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

2.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:08

0.0

برای حل، اعداد را در یک بردار ذخیره کن، هدر را برای std::max و هدر را برای std::abs اضافه کن. در یک حلقه روی عناصر برو، مقدار بیشینه را با std::max به‌روزرسانی کن و برای نگهداری اندیس از شرط ساده (اگر مقدار جدید بزرگ‌تر بود اندیس را ذخیره کن) استفاده کن؛ برای بزرگ‌ترین قدر مطلق از std::abs و مجدداً std::max بهره ببر. نکته: می‌توانی از std::max_element نیز برای پیدا کردن مقدار و اندیس به‌صورت مستقیم استفاده کنی، و در آرایه‌های خیلی بزرگ برای بهبود کارایی گزینه‌هایی مانند الگوریتم‌های موازی (مثلاً OpenMP یا std::reduce در حالت موازی) را در نظر بگیر.

توسط پژوهشگر در 220 روز قبل ساعت 02:08
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 220 روز قبل ساعت 10:52

برای استفاده از std::max و std::abs حتماً هدرهای <algorithm> و <cmath> را اضافه کنید و مقدار اولیه‌ی بزرگترین مقدار را با اولین عنصر مقداردهی کنید. اندیس‌ها را با یک متغیر مستقل نگه دارید و در هر گام اگر مقدار جدید بزرگ‌تر بود مقدار و اندیس را به‌روزرسانی کنید؛ توجه کنید که اندیس معمولاً از 0 شروع می‌شود مگر اینکه تصمیم به 1-based دارید. استفاده از std::max_element به‌طور مستقیم برای به‌دست آوردن مقدار و اندیس امکان‌پذیر است، اما به‌دنبال به‌روز رسانی اندیس بعد از یافتن مقدار نهایی هستید. در آرایه‌های خیلی بزرگ می‌توانید با الگوریتم‌های موازی یا std::reduce با اجرای هم‌زمان کارایی را بهبود بخشید.

گزارش

1 پاسخ

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

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