یک برنامهٔ ساده به زبان C++ بنویسید که مقادیر ورودی (شبیهسازی خواندن از سنسور) را دانهدانه جمع میکند و قبل از هر جمع بررسی کند که جمعِ جدید باعث سرریز int نشود؛ اگر سرریز محتمل بود پیغام خطا چاپ کند و جمع را متوقف نماید.
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:32 0.0
برای حل از هدر استفاده کنید و مقدار بیشینهٔ نوع int را با INT_MAX بگیرید، سپس قبل از انجام current_sum + value بررسی کنید که value > INT_MAX - current_sum نباشد؛ در صورت برقرار بودن شرط، سرریز رخ میدهد و باید پیغام خطا بدهید. این کار هم در برنامههای سیستم/امبدد اهمیت دارد چون منابع محدودند؛ میتوانید برای تست از g++ استفاده کنید و برای جلوگیری از خطای منطقی راهکار جایگزین مثل استفاده از long long یا مدیریت خطا را مد نظر قرار دهید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای جلوگیری از سرریز در جمع مقادیر ورودی، قبل از انجام current_sum + value چک کنید که value <= INT_MAX - current_sum باشد؛ در غیر این صورت خطای overflow چاپ و اجرای متوقف شود. استفاده از INT_MAX از <climits> قابلِ دسترسی است و این رویکرد برای سیستمهای با منابع محدود مفید است. برای تست میتوانید با g++ کامپایل کنید و بهجای overflow از long long یا مدیریت استثنا استفاده کنید تا منطق کد روشنتر باشد.
گزارش