یک برنامهٔ ساده به زبان C++ بنویسید که مقادیر ورودی (شبیه‌سازی خواندن از سنسور) را دانه‌دانه جمع می‌کند و قبل از هر جمع بررسی کند که جمعِ جدید باعث سرریز int نشود؛ اگر سرریز محتمل بود پیغام خطا چاپ کند و جمع را متوقف نماید.

1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:32

0.0

برای حل از هدر استفاده کنید و مقدار بیشینهٔ نوع int را با INT_MAX بگیرید، سپس قبل از انجام current_sum + value بررسی کنید که value > INT_MAX - current_sum نباشد؛ در صورت برقرار بودن شرط، سرریز رخ می‌دهد و باید پیغام خطا بدهید. این کار هم در برنامه‌های سیستم/امبدد اهمیت دارد چون منابع محدودند؛ می‌توانید برای تست از g++ استفاده کنید و برای جلوگیری از خطای منطقی راهکار جایگزین مثل استفاده از long long یا مدیریت خطا را مد نظر قرار دهید.

توسط پژوهشگر در 221 روز قبل ساعت 01:32
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 221 روز قبل ساعت 12:53

برای جلوگیری از سرریز در جمع مقادیر ورودی، قبل از انجام current_sum + value چک کنید که value <= INT_MAX - current_sum باشد؛ در غیر این صورت خطای overflow چاپ و اجرای متوقف شود. استفاده از INT_MAX از <climits> قابلِ دسترسی است و این رویکرد برای سیستم‌های با منابع محدود مفید است. برای تست می‌توانید با g++ کامپایل کنید و به‌جای overflow از long long یا مدیریت استثنا استفاده کنید تا منطق کد روشن‌تر باشد.

گزارش

1 پاسخ

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

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