یک برنامهٔ C++ بنویسید که یک رشتهٔ نمایانگر یک خط کد ساده را میگیرد و تعداد شناسههای معتبر (متغیرها) را میشمارد؛ شناسه معتبر باید با حرف شروع شود و پس از آن میتواند شامل حروف، ارقام یا زیرخط (_) باشد.
11.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:33 0.0
برای حل این مسئله رشته را کاراکتر به کاراکتر پیمایش کنید و هنگامی که به یک کاراکتر که با آن میتوان شروع یک شناسه باشد (با استفاده از std::isalpha از هدر cctype) برخورد کردید، ادامهٔ کاراکترها را تا زمانی که حروف، ارقام یا زیرخط میآیند دنبال کنید و آن را به عنوان یک شناسه بشمارید. این تکنیک در تبدیل سادهٔ خطوط کد به توکنها در مفسرها/کامپایلرها کاربرد دارد و برای تجزیهٔ عبارات ریاضی در محاسبات علمی نیز مفید است؛ دقت کنید که فاصلهها و کاراکترهای غیرفاصلهای (مانند عملیات ریاضی) باعث پایان شناسه میشوند.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این پیادهسازی این است که شناسهها را از یک حرف آغاز کنید و سپس تا پایانِ کاراکترهای معتبر شامل حروف، ارقام یا زیرخط ادامه دهید. برای ایمنی از رفتار نامشخصِ std::isalpha و std::isalnum با کاراکترهای منفی، رشته را به unsigned char تبدیل کنید؛ مثلاً از std::isalpha(static_cast<unsigned char>(c)) استفاده کنید. همچنین باید از آغاز با حرف اطمینان یابید و '_' را تنها در ادامهٔ شناسه مجاز بدانید. برای بهبود خوانایی و کارایی، میتوانید از یک ماشین حالت ساده استفاده کنید که حالات در شناسه و خارج از شناسه را مدیریت کند.
گزارش