یک برنامه C++ بنویسید که یک رشته ورودی را گرفته و با استفاده از تابع std::islower از هدر تعداد حروف کوچک انگلیسی را بشمارد و درصد آن‌ها نسبت به طول رشته را به‌صورت یک عدد صحیح چاپ کند.

15.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:24

0.0

برای حل مسئله، رشته را با std::string خوانده و با یک حلقه روی تک‌تک نویسه‌ها بروید و با استفاده از std::islower(static_cast(ch)) بررسی کنید که آیا نویسه حرف کوچک است یا خیر؛ سپس تعداد حروف کوچک را بر طول رشته تقسیم کرده و درصد را محاسبه و به عدد صحیح تبدیل کنید. از هدر استفاده کنید و به همین خاطر برای جلوگیری از رفتار تعریف‌نشده کاراکترها را قبل از ارسال به std::islower به unsigned char تبدیل کنید. این نوع بررسی‌ها در ساخت مفسرها و کامپایلرها برای تشخیص شناسه‌ها یا در پیش‌پردازش نام‌های متغیر در محاسبات علمی مفید است؛ در ورودی‌های بزرگ دقت کنید تقسیم بر صفر را کنترل کنید و در صورت نیاز رشته‌های خالی را مدیریت نمایید.

توسط پژوهشگر در 198 روز قبل ساعت 01:24
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 198 روز قبل ساعت 01:25

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

گزارش

1 پاسخ

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

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