برنامهای به زبان C بنویسید که دو آرایهٔ ورودی از اعداد صحیح با طول n را دریافت کرده و بیشینهٔ قدر مطلق اختلاف عناصر متناظر (max |a[i]-b[i]|) را محاسبه و چاپ کند.
5.0 بازدید آخرین ویرایش در 203 روز قبل ساعت 02:32 0.0
برای حل، در برنامه با استفاده از هدر تابع abs را برای محاسبه قدر مطلق اختلاف هر جفت عنصر بهکار ببرید: در یک حلقهی تک که از i=0 تا n-1 اجرا میشود diff = abs(a[i]-b[i]) را محاسبه و بیشینه را نگهدارید و در پایان چاپ کنید؛ اگر دادهها اعشاری باشند از fabs استفاده کنید. برای کار با آرایههای بزرگ از یک گذر خطی O(n) استفاده کنید، نوعهای مناسب مثل size_t یا long long به کار ببرید و برای بهبود کارایی هنگام دادههای بسیار بزرگ میتوانید کامپایلر gcc را با -O2 یا روشهای موازیسازی ساده مانند OpenMP امتحان کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای جلوگیری از مشکلِ اورفلو در تفاضل دو عدد صحیح، تفاضل را بهصورت long long محاسبه کنید و از llabs استفاده کنید. diff را به صورت (long long)a[i] - b[i] محاسبه کرده و مقدار مطلق آن را با llabs بگیرید تا از اورفلو جلوگیری شود. این کار در یک حلقهٔ واحد از i=0 تا n-1 با زمان کار O(n) انجام میشود. برای دادههای بزرگ، استفاده از IO سریع مانند scanf/printf و گزینههای بهینهسازی مثل -O2 یا OpenMP میتواند کارایی را بهبود دهد.
گزارش