یک برنامهٔ C++ بنویسید که یک رشته شامل شناسه‌ها یا متن عددی را از ورودی بگیرد و با استفاده از تابع std::toupper از هدر <cctype> فقط حروف الفبا را به حروف بزرگ تبدیل کرده و رشتهٔ نهایی را چاپ کند.

2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:29

0.0

برای حل این مسئله در C++ از هدرهای <iostream> و <string> و <cctype> استفاده کنید، روی هر کاراکتر رشته حلقه بزنید و با فراخوانی std::toupper(static_cast(ch)) حرف را به بزرگ تبدیل کنید و نتیجه را در همان رشته یا رشتهٔ خروجی ذخیره کنید؛ توجه کنید که std::toupper یک int برمی‌گرداند و بهتر است قبل از ارسال کاراکتر به آن از static_cast استفاده کنید تا رفتار تعریف‌شده داشته باشد. این روش برای نرمال‌سازی شناسه‌ها در کامپایلرها/مفسرها (حالت‌ناحساس) و هم‌چنین یکسان‌سازی نام متغیرها یا واحدها در محاسبات علمی مفید است؛ نکته‌های عملی: کاراکترهای غیرحرف را بدون تغییر نگه دارید و می‌توانید به‌جای حلقه از std::transform با لامبدا بهره ببرید.

توسط پژوهشگر در 221 روز قبل ساعت 01:29
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 221 روز قبل ساعت 13:07

برای ایمنی و وضوح کد، می‌توانید از std::transform با یک لامبدا استفاده کنید تا حروف الفبا را به حروف بزرگ تبدیل کنید. همچنین هنگام فراخوانی std::toupper مقدار ورودی را به unsigned char تبدیل کنید (مثلاً static_cast<unsigned char>(c)) تا از رفتار تعریف‌شده بهره ببرید و مشکلات کاراکترهای منفی لغو شوند. کاراکترهای غیرحرف به طور پیش‌فرض تغییر نمی‌کنند اما برای تضمین این رفتار می‌توانید با std::isalpha بررسی کنید. نهایتاً رشتهٔ نهایی را با std::cout چاپ کنید.

گزارش

1 پاسخ

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

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