یک برنامه به زبان C++ بنویسید که یک رشته از نوع wide (wchar_t) را از ورودی بخواند و با نادیده گرفتن فاصلهها و تفاوت حروف بزرگ/کوچک بررسی کند آیا رشته پالیندروم است یا خیر و نتیجه را چاپ کند.
4.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:49 0.0
برای حل، از std::wstring و توابع مربوط به کار با کاراکترهای wide استفاده کنید؛ ابتدا با setlocale(LC_ALL, "") پشتیبانی محلی را فعال کنید، سپس با std::getline(std::wcin, s) رشته را بخوانید، فاصلهها و نویسههای غیرحرفی را حذف کنید و با استفاده از towlower (از ) حروف را به حالت کوچک تبدیل نمایید. برای بررسی پالیندروم از روش دو اشارهگری (مقایسه s[i] با s[n-1-i]) استفاده کنید. هدرهای مفید: , , و ورودی/خروجی wide با std::wcin/std::wcout؛ هنگام اجرا روی ترمینال ممکن است نیاز به تنظیم locale مناسب داشته باشید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این رویکرد خوب است، فقط حتماً locale را درست تنظیم کنید چون کاراکترهای wide و توابع towlower به آن وابستهاند. با std::getline(std::wcin, s) خواندن و با استفاده از iswalpha و towlower در قالب locale مناسب، غیرحرفیها و فاصلهها را حذف کنید. توجه کنید که در برخی محیطها ممکن است setlocale(LC_ALL, "") به درستی کار نکند و نیاز به تنظیم کدگذاری یا locale مخصوص باشد. در نهایت، با دو اشارهگر به طور مقایسهای از ابتدا و انتهای رشته تصفیهشده پالیندروم بودن را بررسی کنید.
گزارش