یک برنامه به زبان 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 مناسب داشته باشید.

توسط پژوهشگر در 202 روز قبل ساعت 02:49
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 202 روز قبل ساعت 08:22

این رویکرد خوب است، فقط حتماً locale را درست تنظیم کنید چون کاراکترهای wide و توابع towlower به آن وابسته‌اند. با std::getline(std::wcin, s) خواندن و با استفاده از iswalpha و towlower در قالب locale مناسب، غیرحرفی‌ها و فاصله‌ها را حذف کنید. توجه کنید که در برخی محیط‌ها ممکن است setlocale(LC_ALL, "") به درستی کار نکند و نیاز به تنظیم کدگذاری یا locale مخصوص باشد. در نهایت، با دو اشاره‌گر به طور مقایسه‌ای از ابتدا و انتهای رشته تصفیه‌شده پالیندروم بودن را بررسی کنید.

گزارش

1 پاسخ

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

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