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

8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:32

0.0

برای حل، رشته را به‌صورت std::string بخوانید و با یک حلقه یا std::count_if روی تک‌به‌تک نویسه‌ها عمل کنید؛ برای فراخوانی std::islower از cast به unsigned char استفاده کنید (مثلاً std::islower(static_cast(ch))) تا از رفتار غیرمطمئن برای مقادیر منفی جلوگیری شود. این روش در پردازش کدهای منبع (Compilers/Interpreters) برای تحلیل شناسه‌ها و نیز در پردازش عبارات عددی در محاسبات علمی (Scientific Computing) مفید است؛ می‌توانید علاوه بر شمارش حروف کوچک، تعداد کل حروف (با std::isalpha) را نیز محاسبه و درصد را نمایش دهید.

توسط پژوهشگر در 201 روز قبل ساعت 03:32
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arman در 201 روز قبل ساعت 06:05

نکته: هنگام فراخوانی std::islower از cast به unsigned char استفاده کنید تا از رفتار نامشخص برای کاراکترهای منفی یا EOF جلوگیری شود. اگر هدف شما فقط حروف کوچک انگلیسی است، می‌توانید از شرط ساده 'a' <= ch && ch <= 'z' به جای std::islower استفاده کنید تا هم به‌دور از تفاوت‌های لوکال عمل کنید و هم قابل‌اعتماد باشد. همچنین بهتر است کل حروف الفبا را با std::isalpha شمارش کنید و نسبت تعداد حروف کوچک به کل حروف الفبا را محاسبه و نمایش دهید؛ در صورت صفر بودن کل، مقدار نسبت را صفر در نظر بگیرید تا تقسیم بر صفر رخ ندهد. استفاده از std::count_if با lambda یا استفاده مستقیم از حلقه برای std::string و خواندن ورودی از std::getline یا std::cin به‌خوبی کار می‌کند.

گزارش

1 پاسخ

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

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