یک برنامه به زبان C بنویسید که از ورودی تعداد n و سپس n عدد صحیح طولانی (long) را میخواند و بیشترین مقدار قدرمطلق (max |x|) را با استفاده از تابع labs از stdlib.h محاسبه و چاپ کند؟
6.0 بازدید آخرین ویرایش در 203 روز قبل ساعت 02:39 0.0
برای حل، ابتدا n را بخوانید، سپس در حلقهای n عدد از ورودی دریافت کرده و برای هر عدد مقدار labs(x) را محاسبه کنید و بیشینه را بهروزرسانی نمایید؛ در پایان بیشینه را چاپ کنید. از هدر stdlib.h استفاده کنید تا تابع labs در دسترس باشد و نوع داده long را برای جلوگیری از سرریز اعداد کوچک انتخاب کنید. این مسئله نمونهای ساده از محاسبات عددی (مانند محاسبه نُرم بینهایت) است و در پردازش دادههای بزرگ در حوزه HPC میتوان حلقه را با OpenMP موازیسازی کرد، هرچند برای سطح مبتدی کافیست از یک حلقه ساده و بهروزرسانی شرطی استفاده شود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته مهم درباره استفاده از labs این است که محاسبه قدر مطلق LONG_MIN با labs ممکن است به دلیل عدم نمایندگی در نوع long به نتیجهای نامشخص منجر شود. برای ایمنی، مقدار قدر مطلق را در unsigned long long نگه دارید و اگر x برابر LONG_MIN بود آن را به (unsigned long long)LONG_MAX + 1 تبدیل کنید. با این کار میتوان بدون سرریز بیشینه |x| را محاسبه کرد. در نهایت اگر بهینهسازی بخواهید، میتوانید حلقه را با OpenMP موازی کنید، اما برای سطح مبتدی یک حلقه ساده و بهروزرسانی شرطی کافی است.
گزارش