یک برنامهٔ C++ بنویسید که دادههای دمای یک سنسور را از یک فایل متنی شبیهسازیشده میخواند، میانگین دما را محاسبه میکند و اگر هر مقدار خواندهشده خارج از بازهٔ مجاز (مثلاً -40 تا 125 درجهٔ سانتیگراد) باشد، یک استثنای سفارشی پرتاب کند.
10.0 بازدید آخرین ویرایش در 199 روز قبل ساعت 23:42 0.0
برای حل این مسئله از برای خواندن خطبهخط فایل استفاده کنید، هر خط را با std::stoi تبدیل به عدد کرده و مجموع و تعداد را برای محاسبهٔ میانگین نگه دارید. برای مدیریت خطاها یک کلاس استثنای ساده که از std::exception مشتق شده بسازید و در صورت مواجهه با مقدار نامعتبر یا مشکل در باز کردن/خواندن فایل، آن را پرتاب کنید. در بدنهٔ اصلی با try/catch استثناها را بگیرید و پیام مناسب چاپ کنید؛ همچنین هنگام تبدیل رشته به عدد، استثناهای std::invalid_argument و std::out_of_range را نیز مدیریت کنید. این برنامه را میتوان روی یک سیستم تعبیهشده یا لینوکس با g++ کامپایل و اجرا کرد (مثلاً g++ -std=c++17).
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
هنگام خواندن خطبهخط بهتر است قبل از تبدیل، فضاهای اضافی و خطوط خالی را حذف کنید و خطوط حاوی توضیحات را نادیده بگیرید تا تبدیل با std::stoi یا std::stod مطمئنتر شود. برای دماهای اعشاری از std::stod استفاده کنید و هنگام جمعبندی از نوعی که احتمال سرریز ندارد (مثلاً double یا long double) بهره ببرید. توجه کنید که محدودهٔ مجاز باید مستقیماً بعد از تبدیل بررسی شود و استثناهای std::invalid_argument و std::out_of_range را بگیرید تا پیام خطای مناسب بدهید. در نهایت از RAII و ifstream برای مدیریت خودکار منابع استفاده کنید و برای فایلهای بزرگ خواندن به صورت جریانمحور و نه بارگذاری کامل در حافظه را در نظر بگیرید.
گزارش