برنامه‌ای به زبان 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 امتحان کنید.

توسط پژوهشگر در 203 روز قبل ساعت 02:32
دسته بندی ها: C for beginner
sara در 203 روز قبل ساعت 09:19

برای جلوگیری از مشکلِ اورفلو در تفاضل دو عدد صحیح، تفاضل را به‌صورت long long محاسبه کنید و از llabs استفاده کنید. diff را به صورت (long long)a[i] - b[i] محاسبه کرده و مقدار مطلق آن را با llabs بگیرید تا از اورفلو جلوگیری شود. این کار در یک حلقهٔ واحد از i=0 تا n-1 با زمان کار O(n) انجام می‌شود. برای داده‌های بزرگ، استفاده از IO سریع مانند scanf/printf و گزینه‌های بهینه‌سازی مثل -O2 یا OpenMP می‌تواند کارایی را بهبود دهد.

گزارش

1 پاسخ

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

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