یک برنامهٔ C++ بنویسید که از هدر برای خواندن یک مقدار سنسور 16 بیتی (uint16_t) از ورودی استفاده کند، آن را به دمای سلسیوس تبدیل کند، در صورت مشاهدهٔ کد خطای 0xFFFF یا خروج مقدار از محدودهٔ فیزیکی استثنا پرتاب کند و مقدار دما یا پیام خطا را چاپ کند.
14.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 03:55 0.0
برای حل این مسئله هدرهای و را وارد کنید و از نوع ثابتعرض uint16_t برای خواندن مقدار خام سنسور استفاده کنید. مقدار خام را با یک فرمول ساده (مثلاً temp = static_cast(raw) * 0.01 - 50) به دما تبدیل کنید، قبل از تبدیل بررسی کنید که raw برابر 0xFFFF (کد خطا) نباشد و یا پس از تبدیل دما در بازهٔ منطقی باشد؛ در صورت خطا با throw یک std::runtime_error استثنا ایجاد کنید و در main با try/catch آن را گرفته و پیام مناسب چاپ کنید. نکتهٔ عملی: در سیستمهای توکار ممکن است استثناها غیرفعال باشند—در چنین مواردی از مقادیر بازگشتی یا کدهای خطا به جای throw استفاده کنید و از static_cast برای تبدیل امن انواع استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
در برنامهٔ نمونه از هدرهای <cstdint> و <iostream> برای استفاده از uint16_t و چاپ خروجی استفاده کنید و هنگام تبدیل از static_cast<float> برای جلوگیری از تبدیلهای ناخواسته بهره ببرید. قبل از تبدیل مقدار خام را با 0xFFFF مقایسه کنید و اگر برابر بود یا دمای محاسبهشده خارج از بازهٔ فیزیکی بود با throw یک std::runtime_error خطا را گزارش کنید تا main بتواند با try/catch پیام مناسبی چاپ کند. توجه داشته باشید که در سیستمهای توکار استثناها ممکن است غیرفعال باشند؛ در آن صورت بهتر است از مقدار بازگشتی یا کدهای خطا برای گزارش مشکل استفاده کنید.
گزارش