یک برنامهٔ C++ بنویسید که یک رشتهٔ نمایانگر یک خط کد ساده را می‌گیرد و تعداد شناسه‌های معتبر (متغیرها) را می‌شمارد؛ شناسه معتبر باید با حرف شروع شود و پس از آن می‌تواند شامل حروف، ارقام یا زیرخط (_) باشد.

11.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:33

0.0

برای حل این مسئله رشته را کاراکتر به کاراکتر پیمایش کنید و هنگامی که به یک کاراکتر که با آن می‌توان شروع یک شناسه باشد (با استفاده از std::isalpha از هدر cctype) برخورد کردید، ادامهٔ کاراکترها را تا زمانی که حروف، ارقام یا زیرخط می‌آیند دنبال کنید و آن را به عنوان یک شناسه بشمارید. این تکنیک در تبدیل سادهٔ خطوط کد به توکن‌ها در مفسرها/کامپایلرها کاربرد دارد و برای تجزیهٔ عبارات ریاضی در محاسبات علمی نیز مفید است؛ دقت کنید که فاصله‌ها و کاراکترهای غیرفاصله‌ای (مانند عملیات ریاضی) باعث پایان شناسه می‌شوند.

توسط پژوهشگر در 201 روز قبل ساعت 03:33
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 201 روز قبل ساعت 06:01

نکتهٔ کلیدی این پیاده‌سازی این است که شناسه‌ها را از یک حرف آغاز کنید و سپس تا پایانِ کاراکترهای معتبر شامل حروف، ارقام یا زیرخط ادامه دهید. برای ایمنی از رفتار نامشخصِ std::isalpha و std::isalnum با کاراکترهای منفی، رشته را به unsigned char تبدیل کنید؛ مثلاً از std::isalpha(static_cast<unsigned char>(c)) استفاده کنید. همچنین باید از آغاز با حرف اطمینان یابید و '_' را تنها در ادامهٔ شناسه مجاز بدانید. برای بهبود خوانایی و کارایی، می‌توانید از یک ماشین حالت ساده استفاده کنید که حالات در شناسه و خارج از شناسه را مدیریت کند.

گزارش

1 پاسخ

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

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