یک برنامهٔ C++ بنویسید که یک رشتهٔ متنی را دریافت کند و تمام اعداد صحیح مثبت (توالی‌های پشت سر هم از رقم‌ها) موجود در رشته را پیدا کرده و مجموع آنها را چاپ کند.

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

0.0

برای حل، رشته را با یک حلقه کاراکتر به کاراکتر پیمایش کنید و با استفاده از تابع std::isdigit از هدر تشخیص دهید که آیا کاراکتر عدد است یا نه؛ اگر عدد است، مقدار عدد فعلی را با num = num*10 + (ch - '0') بسازید، و وقتی به کاراکتر غیررقمی رسیدید عدد ساخته‌شده را به مجموع اضافه و شمارش را صفر کنید. در پایان پس از پایان حلقه عدد باقیمانده را هم به مجموع اضافه کنید. از هدرهای , , استفاده کنید و برای جلوگیری از سرریز اندازهٔ مناسب (مثلاً long long) را در نظر بگیرید؛ این روش مشابه مرحلهٔ ابتدایی تحلیلِ لغوی در کامپایلرها و مفید در پردازش داده‌های عددی در محاسبات علمی است.

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

این روش با پیمایش کاراکتر به کاراکتر رشته و استفاده از std::isdigit برای تشخیص رقم‌ها، پیاده‌سازی ساده و واضحی است. برای ایمن‌سازی کار با کاراکترها، از static_cast<unsigned char>(ch) در std::isdigit استفاده کنید و هدر <cctype> را اضافه کنید. در هنگام رسیدن به کاراکتر غیررقمی، عدد فعلی را به مجموع افزوده و مقدار شمارش را صفر کنید و در پایان مقدار باقیمانده را نیز اضافه کنید. اگر احتمال می‌دهید که مجموع یا خود اعداد می‌تواند از محدودیت‌های طولی خارج شود، از نوع داده‌ای بزرگ‌تر مانند unsigned long long استفاده کنید یا سرریز را بررسی کنید.

گزارش

1 پاسخ

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

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