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

توسط پژوهشگر در 220 روز قبل ساعت 01:56
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arman در 220 روز قبل ساعت 11:31

نکتهٔ کلیدی این است که از constexpr برای Vref و تعداد بیت‌ها استفاده کنید تا مقادیر در زمان کامپایل ثابت بمانند. برای محاسبه ولتاژ، مقدار خام را با static_cast به یک نوع اعشاری ضرب کنید و از رابطه voltage = raw * (Vref / (2^bits - 1)) استفاده نمایید. ورودی را قبل از تبدیل اعتبارسنجی کنید و اگر خارج از 0 تا 4095 بود استثنا از نوع std::out_of_range یا std::runtime_error پرتاب کنید. در تابع main استثنا را با بلوک try-catch بگیرید و پیام خطای واضح چاپ کنید تا رفتار برنامه قابل پیش‌بینی و مناسب برای سیستم‌های نهفته باشد.

گزارش

1 پاسخ

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

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