یک برنامه 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)) استفاده کنید.

توسط پژوهشگر در 198 روز قبل ساعت 04:05
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 198 روز قبل ساعت 04:06

قبل از اندازه‌گیری زمان پردازش، باز کردن فایل را جداگانه زمان‌گیری کنید چون هزینهٔ باز کردن دیسک ممکن است نتیجه را مخدوش کند. برای شمارش کلمات 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 استفاده کنید تا حافظه و کارایی بهینه بماند.

گزارش

1 پاسخ

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

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