یک برنامه C++ بنویسید که یک wstring ورودی بگیرد، تمام حروف را به حروف کوچک تبدیل کند، کاراکترهای غیرحروفوعدد را حذف کند و تعداد حروف، ارقام و کاراکترهای حذفشده را چاپ کند.
4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:15 0.0
برای حل، از std::wstring برای رشتهی پهن و از توابع موجود در هدر مانند iswalpha، iswdigit و towlower استفاده کنید؛ ابتدا locale مناسب را تنظیم کنید (مثلاً std::locale::global(std::locale(""))) تا ورودیهای یونیکد درست خوانده شوند، سپس با یک حلقه روی هر wchar_t عمل کنید: اگر iswalpha بود با towlower آن را به خروجی اضافه و شمارش حروف را افزایش دهید، اگر iswdigit بود آن را اضافه و شمارش ارقام را افزایش دهید، در غیر این صورت آن را حذف بشمارید. نکتهها: از std::getline(std::wcin, ...) برای خواندن کامل خط استفاده کنید و تعداد حذفشده را میتوانید بهصورت طول اولیه منهای طول خروجی محاسبه کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای کار با کاراکترهای یونیکد، ابتدا locale مناسبی را تنظیم کنید تا توابع iswalpha و iswdigit دقیق عمل کنند. برای کارایی بهتر خروجی را با reserve آماده کنید و هر wchar_t را با towlower به حروف کوچک تبدیل و به خروجی اضافه کنید. فقط حروف و اعداد نگهداری میشوند و بقیه کاراکترها حذف خواهند شد؛ تعداد حذفشدهها را میتوانید از طول ورودی منهای طول خروجی محاسبه کنید. همچنین از std::getline(std::wcin, ...) استفاده کنید تا خط کامل ورودی خوانده شود.
گزارش