یک برنامهٔ C++ بنویسید که یک خط شامل نام‌های متغیر جدا شده با فاصله را از ورودی خوانده، هر حرف الفبایی را با استفاده از std::toupper از به حرف بزرگ تبدیل کند و رشتهٔ نتیجه را چاپ کند.

4.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:37

0.0

برای حل، خط ورودی را با getline در یک std::string بخوانید و با یک حلقه روی تک‌تک کاراکترها بروید؛ برای تبدیل هر حرف از std::toupper (هدر ) استفاده کنید و مقدار بازگشتی را به کاراکتر برگردانید. توجه کنید که std::toupper یک int برمی‌گرداند، پس هنگام فراخوانی آن از cast یا نگهداری با unsigned char استفاده کنید تا از رفتار تعریف‌شده اطمینان حاصل شود. این کار مشابه یک پیش‌پردازنده ساده در کامپایلر/تفسیرگر برای نرمال‌سازی اسامی شناسه‌ها و در تحلیل متون ریاضی برای محاسبات علمی کاربردی است.

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

نکتهٔ مفید این است که هنگام استفاده از std::toupper مقدار کاراکتر را به unsigned char تبدیل کنید و نتیجه را به char بازگردانید تا از رفتار نامشخص جلوگیری شود. برای این کار معمولاً از static_cast<unsigned char>(c) استفاده می‌کنید و سپس نتیجهٔ int را به char برمی‌گردانید. به‌جز حروف، کاراکترهای غیرحرف مانند فضاها بدون تغییر باقی می‌مانند. توجه داشته باشید std::toupper به Locale وابسته است و برای کار با یونیکد (مثلاً رشته‌های فارسی/UTF-8) به‌طور کامل مناسب نیست و معمولاً به کتابخانه‌های زبان‌پایه‌ای نیاز دارد.

گزارش

1 پاسخ

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

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