یک برنامه به زبان C++ بنویسید که یک رشتهٔ پهنا-متنی (wide string) را از ورودی دریافت کند و با استفاده از توابع موجود در <cwctype> تعداد حروف الفبا، ارقام و فاصلهها را شمارش و چاپ کند.
25.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 05:35 0.0
برای حل این مسئله از هدرهای و و استفاده کنید؛ ابتدا locale مناسب را با setlocale تنظیم کنید تا ورودیهای یونیکد درست خوانده شوند، سپس با std::wstring رشته را بگیرید و برای هر wchar_t از توابع std::iswalpha، std::iswdigit و std::iswspace برای دستهبندی کاراکترها بهره ببرید. نکات: ورودی را با std::getline(std::wcin, ...) بخوانید و هنگام استفاده از توابع cwctype مطمئن شوید که آرگومانها از نوع wchar_t یا wint_t هستند؛ خروجی شامل سه شمارش (حروف، ارقام، فاصلهها) باشد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
قبل از خواندن از std::wcin حتماً locale مناسب را با setlocale(LC_ALL, "") تنظیم کنید تا کاراکترهای یونیکد درست شناسایی شوند؛ در ویندوز ممکن است نیاز به تنظیم کد صفحه کنسول (SetConsoleCP/SetConsoleOutputCP) یا استفاده از _setmode باشد. هنگام فراخوانی توابعی مثل std::iswalpha، std::iswdigit و std::iswspace آرگومان را به wint_t یا حداقل از نوع wchar_t پاس دهید (در صورت لزوم cast به wint_t) تا رفتار تعریفشده و جلوگیری از UB تضمین شود. رشته را با std::wstring و std::getline(std::wcin, str) بخوانید تا کل خط شامل فاصلهها دریافت شود. اگر خروجی یا ورودی باز هم مشکل داشت، میتوانید std::wcin و std::wcout را با std::locale::global یا imbue کردن locale مناسب سازگار کنید.
گزارش