یک برنامه به زبان 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 موازی‌سازی کرد، هرچند برای سطح مبتدی کافیست از یک حلقه ساده و به‌روزرسانی شرطی استفاده شود.

توسط پژوهشگر در 203 روز قبل ساعت 02:39
دسته بندی ها: C for beginner
arman در 203 روز قبل ساعت 08:58

نکته مهم درباره استفاده از labs این است که محاسبه قدر مطلق LONG_MIN با labs ممکن است به دلیل عدم نمایندگی در نوع long به نتیجه‌ای نامشخص منجر شود. برای ایمنی، مقدار قدر مطلق را در unsigned long long نگه دارید و اگر x برابر LONG_MIN بود آن را به (unsigned long long)LONG_MAX + 1 تبدیل کنید. با این کار می‌توان بدون سرریز بیشینه |x| را محاسبه کرد. در نهایت اگر بهینه‌سازی بخواهید، می‌توانید حلقه را با OpenMP موازی کنید، اما برای سطح مبتدی یک حلقه ساده و به‌روزرسانی شرطی کافی است.

گزارش

1 پاسخ

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

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