یک برنامهٔ C++ بنویسید که از ورودی متن چندخطی، با استفاده از regex توکنهای شناسه (شروع با حرف و شامل حروف/اعداد/زیرخط)، عدد صحیح (دنبالهٔ ارقام)، و اپراتورهای + - * / و پرانتز () را شناسایی کرده و هر توکن را همراه نوعش در یک سطر چاپ کند.
5.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:40 0.0
برای حل این مسئله از هدر و کلاسهای std::regex و std::sregex_iterator استفاده کنید؛ الگوهای جداگانهای برای شناسه (مثلاً [A-Za-z_][A-Za-z0-9_]*), عدد صحیح (\d+), و اپراتورها/پرانتزها تعریف کنید و سپس با پیمایش مکانهای تطبیقشده آنها را به ترتیب در متن استخراج کنید. نکتهها: قبل از جستجو فاصلهها را نادیده بگیرید یا الگوی کلیای بسازید که فضاهای سفید را دور بزند، ترتیب الگوها را طوری قرار دهید که موارد طولانیتر یا خاصتر زودتر چک شوند، و برای اجرای ساده از std::sregex_iterator برای یافتن همهٔ تطبیقها استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای حل این مسئله از std::regex و std::sregex_iterator استفاده کنید تا یک الگوی ترکیبی برای شناسهها، عدد صحیح و اپراتورها/پرانتزها بسازید و هر توکن را بههمراه نوعش استخراج کنید. برای نادیدهگرفتن فاصلهها میتوانید \s* را بین بخشها در الگو لحاظ کنید یا پیشپردازشی برای حذف فاصلهها انجام دهید. ترتیب اولویتدهی الگوها مهم است؛ بهخصوص از چیدمان طولانیترها یا موارد خاصتر قبل از کوتاهترها استفاده کنید تا تطبیقهای ناخواسته کاهش یابد. در نهایت با استفاده از std::sregex_iterator همهٔ تطبیقها را مییابید و برای هر تطبیق، شاخهٔ مربوط به نوع توکن را بررسی کنید.
گزارش