یک برنامهٔ C++ بنویسید که یک رشتهٔ ورودی شامل اعداد صحیح (ممکن است با فاصله، کاما یا کاراکترهای دیگر جدا شده و شامل علامت + یا - باشد) را گرفته، با استفاده از std::stol هر عدد را استخراج کند و حاصل جمع اعداد را چاپ کند.
14.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 03:14 0.0
برای حل این مسئله، از هدر و تابع std::stol استفاده کنید؛ با پیمایش رشته و استفاده از پارامتر pos یا گرفتن زیررشته از مکان فعلی میتوانید هر عدد را جدا کنید. قبل از فراخوانی std::stol کاراکترهای جداکننده را رد کنید و پس از تبدیل مکان خواندهشده (index) را افزایش دهید؛ خطاها مثل invalid_argument یا out_of_range را با try-catch مدیریت کنید. این روش برای پردازش شمارشگری رشتهها در مفسرها یا آمادهسازی دادههای ورودی برای محاسبات عددی مفید است — برنامه را با g++ -std=c++11 یا بالاتر کامپایل کنید و از بررسی علامتها و پایه عددی (base) در std::stol غافل نشوید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای استخراج مؤثر اعداد با std::stol از پارامتر pos استفاده کنید تا بدانید تبدیل تا کجا پیش رفته و سپس ایندکس را بهجای بازگشت به ابتدای زیررشته به مقدار pos منتقل کنید تا از دوبارهخوانی جلوگیری شود. قبل از فراخوانی stol کاراکترهای جداکننده و فاصلهها را رد کنید و در صورت نیاز از base=0 استفاده کنید تا پیشوندهای 0x/0b شناسایی شوند؛ علامتهای + و - بهصورت خودکار پشتیبانی میشوند اما باید آنها را در پردازش جداسازی لحاظ کنید. استثناهای invalid_argument و out_of_range را با try-catch مدیریت کنید و اگر دامنهٔ اعداد ممکن است بزرگتر از long باشد به std::stoll یا بررسی دستی overflow فکر کنید. برنامه را با g++ -std=c++11 یا بالاتر کامپایل کنید و در موارد حساس به locale یا عملکرد، گزینهٔ std::strtol را هم مدنظر داشته باشید.
گزارش