با استفاده از تابع std::strstr تعداد دفعات ظاهر شدن یک زیررشته (الگوی جستجو) را در یک رشته ورودی بشمارید و عدد را چاپ کنید.

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

0.0

ورودی: در خط اول یک رشته (می‌تواند شامل فاصله و کاراکترهای خاص باشد) و در خط دوم الگوی جستجو قرار دارد؛ خروجی: تعداد دفعات غیرهم‌پوشان (non-overlapping) که الگو در رشته ظاهر شده است. روش حل: در C++ متن و الگو را به std::string بخوانید و سپس با c_str() آن‌ها را به char* تبدیل کنید و در حلقه‌ای از تابع std::strstr (در ) استفاده کنید تا هر بار محل بعدی الگو را پیدا کنید؛ پس از هر بار پیدا شدن، اشاره‌گر را به اندازه طول الگو جلو ببرید تا موارد غیرهم‌پوشان شمارش شوند. نکات: اگر الگو رشته خالی باشد، باید 0 چاپ کنید و مطمئن شوید که از header مناسب () استفاده می‌کنید.

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

نکته کلیدی این است که پس از یافتن هر رخ‌داد توسط strstr، اشاره‌گر را به اندازه طول الگو جابه‌جا کنید تا شمارش غیرهم‌پوشان باشد. اگر الگو خالی است مقدار 0 چاپ کنید و ورودی‌ها را با std::string بخوانید و سپس با .c_str() به کاراکتر* تبدیل کنید. توجه کنید strstr به صورت بایت-به-بایت کار می‌کند و برای متون UTF-8 ممکن است هم‌پوشانی‌های ناخواسته ایجاد کند، بنابراین اگر کاراکترهای چندبایتی دارید باید به این نکته توجه کنید. همچنین از include های <cstring> و <string> اطمینان حاصل کنید و امنیت استفاده از c_str() را رعایت کنید.

گزارش

1 پاسخ

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

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