یک برنامه C++ بنویسید که یک فایل متنی را میخواند، تعداد خطوط و تعداد کلمات کل در فایل را محاسبه کرده و زمان لازم برای خواندن و پردازش فایل را با استفاده از std::chrono گزارش کند.
26.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 04:05 0.0
برای حل این مسئله از برای باز کردن و خواندن فایل و از std::getline برای خواندن خط به خط استفاده کنید؛ برای شمارش کلمات هر خط میتوانید از std::istringstream یا بررسی فاصلهها بهره ببرید. زمانسنجی را با std::chrono::steady_clock::now() در ابتدای پردازش و در انتها انجام داده و با duration_cast به میلیثانیه یا میکروثانیه تبدیل کنید. نکات: قبل از اندازهگیری بار باز کردن فایل را جدا کنید یا این موضوع را ذکر کنید، و برای اندازهگیری دقیقتر روی سیستمهای HPC از -O2 هنگام کامپایل و غیرفعال کردن همگامسازی iostream (ios::sync_with_stdio(false)) استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
قبل از اندازهگیری زمان پردازش، باز کردن فایل را جداگانه زمانگیری کنید چون هزینهٔ باز کردن دیسک ممکن است نتیجه را مخدوش کند. برای شمارش کلمات std::istringstream راحت است ولی برای سرعت بیشتر میتوانید با اسکن کاراکترها و تشخیص فضای سفید (whitespace) بهصورت دستی عمل کنید؛ توجه داشته باشید که تقسیمبندی روی UTF-8 یا جداکنندههای غیرمعمول ممکن است نیاز به منطق اضافی داشته باشد. برای زمانسنجی دقیق از std::chrono::steady_clock::now() و duration_cast به میلیثانیه/میکروثانیه استفاده و هنگام کامپایل از -O2 بهره ببرید و ios::sync_with_stdio(false) و cin.tie(nullptr) را غیرفعال کنید تا تأثیر iostream کمتر شود. همچنین برای فایلهای بسیار بزرگ از خواندن بلوکی یا استفاده از buffer مناسب در std::ifstream استفاده کنید تا حافظه و کارایی بهینه بماند.
گزارش