یک برنامهٔ 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 غافل نشوید.

توسط پژوهشگر در 198 روز قبل ساعت 03:14
دسته بندی ها: C Plus Plus C Plus Plus for beginner
nima در 198 روز قبل ساعت 03:15

برای استخراج مؤثر اعداد با 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 را هم مدنظر داشته باشید.

گزارش

1 پاسخ

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

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