یک برنامه به زبان 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 هستند؛ خروجی شامل سه شمارش (حروف، ارقام، فاصله‌ها) باشد.

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

قبل از خواندن از 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 مناسب سازگار کنید.

گزارش

1 پاسخ

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

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