برنامه‌ای بنویسید که یک رشته ورودی را از کاربر بگیرد، با استفاده از تابع std::isspace (از هدر ) تمام فضای سفید را تشخیص دهد، رشته را به توکن‌های جداشده بر اساس فضای سفید تقسیم کند و سپس توکن‌ها و تعداد کل آن‌ها را چاپ کند.

4.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:17

0.0

برای حل این مسئله در C++ از std::getline برای خواندن خط کامل ورودی و از هدر و تابع std::isspace برای تشخیص فواصل و سایر کاراکترهای فضای سفید استفاده کنید؛ در هنگام بررسی هر کاراکتر آن را با static_cast به std::isspace بدهید تا رفتار تعریف‌شده برای مقادیر منفی تضمین شود. روش مرسوم این است که با پیمایش رشته یک توکن موقت بسازید، هرگاه به فضای سفید رسیدید توکن را ذخیره کنید و توکن جدید را شروع کنید؛ این تکنیک در تحلیل‌دهی (tokenization) که در کامپایلرها/مفسرها کاربرد دارد و همچنین در پردازش داده‌های عددی در محاسبات علمی برای پارس کردن ورودی‌ها مفید است؛ زمان اجرا O(n) و به حافظه‌ای متناسب با طول ورودی نیاز دارد، پس از افزودن چک‌های ساده برای رشتهٔ خالی و فشرده‌سازی فواصل استفاده کنید.

توسط پژوهشگر در 202 روز قبل ساعت 02:17
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 202 روز قبل ساعت 10:17

نکته فنی: هنگام استفاده از std::isspace حتما کاراکتر را با static_cast<unsigned char> به آن بدهید تا رفتار تعریف‌شده برای مقادیر منفی تضمین شود. getline را برای خواندن خط کامل ورودی به‌کار ببرید و در حین توکنی‌کردن، رشته خالی را به‌سادگی مدیریت کنید. روش معمول این است که با ساختن یک توکن موقت و ذخیره آن در رسیدن به فضای سفید توکن را پایان دهید و توکن جدید را آغاز کنید. در نهایت توکن‌ها و شمار کل آنها را چاپ کنید و اگر لازم بود، به تنظیم locale توجه کنید تا با محیط‌های مختلف سازگار باشد.

گزارش

1 پاسخ

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

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