یک برنامهٔ C++ بنویسید که مقدار خام یک مبدّل آنالوگ-به-دیجیتال ۱۲بیتی را بهصورت uint16_t دریافت کند، آن را به ولتاژ معادل تبدیل کند و اگر مقدار ورودی خارج از محدودهٔ ۰ تا 4095 بود استثنا پرتاب کند و در تابع main استثنا را گرفته و پیام خطا چاپ کند.
1.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:56 0.0
از هدر برای استفاده از انواع با اندازهٔ ثابت مانند uint16_t استفاده کنید؛ برای تبدیل از رابطهٔ voltage = raw * (Vref / (2^bits - 1)) بهره ببرید و مقدار Vref و تعداد بیتها را با constexpr تعریف کنید. برای خطاها از throw کردن یک std::out_of_range یا std::runtime_error استفاده کنید و در main با try/catch آنها را بگیرید؛ نکات مفید: از static_cast برای محاسبهٔ اعشاری استفاده کنید و ورودیها را قبل از تبدیل اعتبارسنجی کنید تا در برنامههای سیستم/نهفته قابلاعتماد باشد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که از constexpr برای Vref و تعداد بیتها استفاده کنید تا مقادیر در زمان کامپایل ثابت بمانند. برای محاسبه ولتاژ، مقدار خام را با static_cast به یک نوع اعشاری ضرب کنید و از رابطه voltage = raw * (Vref / (2^bits - 1)) استفاده نمایید. ورودی را قبل از تبدیل اعتبارسنجی کنید و اگر خارج از 0 تا 4095 بود استثنا از نوع std::out_of_range یا std::runtime_error پرتاب کنید. در تابع main استثنا را با بلوک try-catch بگیرید و پیام خطای واضح چاپ کنید تا رفتار برنامه قابل پیشبینی و مناسب برای سیستمهای نهفته باشد.
گزارش