یک برنامهٔ 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).

توسط پژوهشگر در 199 روز قبل ساعت 23:42
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 199 روز قبل ساعت 23:43

هنگام خواندن خط‌به‌خط بهتر است قبل از تبدیل، فضاهای اضافی و خطوط خالی را حذف کنید و خطوط حاوی توضیحات را نادیده بگیرید تا تبدیل با std::stoi یا std::stod مطمئن‌تر شود. برای دماهای اعشاری از std::stod استفاده کنید و هنگام جمع‌بندی از نوعی که احتمال سرریز ندارد (مثلاً double یا long double) بهره ببرید. توجه کنید که محدودهٔ مجاز باید مستقیماً بعد از تبدیل بررسی شود و استثناهای std::invalid_argument و std::out_of_range را بگیرید تا پیام خطای مناسب بدهید. در نهایت از RAII و ifstream برای مدیریت خودکار منابع استفاده کنید و برای فایل‌های بزرگ خواندن به صورت جریان‌محور و نه بارگذاری کامل در حافظه را در نظر بگیرید.

گزارش

1 پاسخ

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

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