یک برنامه C++ بنویسید که یک رشته ورودی را گرفته و با استفاده از تابع std::islower از هدر تعداد حروف کوچک انگلیسی را بشمارد و درصد آنها نسبت به طول رشته را بهصورت یک عدد صحیح چاپ کند.
15.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:24 0.0
برای حل مسئله، رشته را با std::string خوانده و با یک حلقه روی تکتک نویسهها بروید و با استفاده از std::islower(static_cast(ch)) بررسی کنید که آیا نویسه حرف کوچک است یا خیر؛ سپس تعداد حروف کوچک را بر طول رشته تقسیم کرده و درصد را محاسبه و به عدد صحیح تبدیل کنید. از هدر استفاده کنید و به همین خاطر برای جلوگیری از رفتار تعریفنشده کاراکترها را قبل از ارسال به std::islower به unsigned char تبدیل کنید. این نوع بررسیها در ساخت مفسرها و کامپایلرها برای تشخیص شناسهها یا در پیشپردازش نامهای متغیر در محاسبات علمی مفید است؛ در ورودیهای بزرگ دقت کنید تقسیم بر صفر را کنترل کنید و در صورت نیاز رشتههای خالی را مدیریت نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
هنگام پیادهسازی، کاراکترها را قبل از ارسال به std::islower با static_cast<unsigned char>(ch) تبدیل کنید تا از رفتار تعریفنشده جلوگیری شود و هدر <cctype> را درج کنید. برای جلوگیری از تقسیم بر صفر، اگر رشته خالی است نتیجه را مناسب (مثلاً 0%) بازگردانید یا پیام خطا بدهید. توجه داشته باشید std::islower تابعی مبتنی بر لوکال C/C++ است و برای یونیکد و حروف غیر ASCII باید از روشهای مناسبتری مثل کار با wchar_t/locale یا کتابخانههای تخصصی استفاده کنید. برای درصد صحیح میتوانید (count*100)/length را محاسبه کنید اما اگر لازم است گرد کردن دقیقتری بخواهید از محاسبات اعشاری و std::lround استفاده کنید.
گزارش