یک برنامه بنویسید که یک رشتهٔ یونیکد (wide string) از کاربر بگیرد، طول آن را با تابع wcslen محاسبه کند، تعداد حروف صدادار و بی‌صدا را بشمارد و سپس رشته را معکوس چاپ کند.

3.0 بازدید آخرین ویرایش در 203 روز قبل ساعت 02:32

0.0

برای حل این مسئله از wchar_t برای ذخیرهٔ کاراکترها و از سربرگ #include استفاده کنید؛ طول رشته را با wcslen به‌دست آورید و با پیمایش آرایهٔ wchar_t کاراکترها را بررسی کرده و شمارش حروف صدادار/بی‌صدا را انجام دهید. برای ورودی/خروجی یونی‌کد از std::wcin و std::wcout به‌همراه setlocale(LC_ALL, "") استفاده کنید تا در کامپایلرها/مفسرهای مختلف و در محاسبات علمی که نیاز به پردازش رشته‌های محلی‌شده دارند، خروجی صحیح دریافت شود؛ برای معکوس‌سازی کافی است عناصر آرایه را از دو سر جابه‌جا کنید.

توسط پژوهشگر در 203 روز قبل ساعت 02:32
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 203 روز قبل ساعت 09:18

این طرح خوب است اما نکته‌ای که باید رعایت شود تنظیم locale با setlocale(LC_ALL, "") یا استفاده از std::locale است تا ورودی/خروجی wide characters در محیط‌های مختلف به درستی کار کند. برای تشخیص حروف صدادار و بی‌صدا باید دامنه‌های زبان هدف را تعریف کنید تا در فارسی یا زبان‌های دیگر نتیجه دقیق‌تر باشد و تنها حروف ASCII کافی نباشد. معکوس‌سازی را می‌توانید با std::reverse انجام دهید تا کد روشن و ایمن بماند و از دستکاری دستی جلوگیری شود. همچنین wcslen طول رشته را تا پایان Null-termination حساب می‌کند، پس مطمئن شوید رشته به‌خوبی وارد شده و رشتهٔ ورودی معتبر است تا از رفتار ناخوشایند جلوگیری شود.

گزارش

1 پاسخ

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

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