یک تابع در زبان C بنویسید که با استفاده از تابع strchr از هدر string.h اولین وقوع یکی از اپراتورهای '+', '-', '*', '/' را در یک رشته حاوی کد منبع پیدا کرده و اندیس آن را بازگرداند (در صورت نبودن، -1 برگردانید).

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

0.0

برای حل این مسأله هدر string.h را وارد کنید و برای هر کدام از کاراکترهای اپراتور از strchr استفاده کنید تا اشاره‌گر به اولین وقوع آن در رشته را بگیرید؛ سپس با کم کردن اشاره‌گر برگشتی از آدرس اولیه رشته، اندیس را محاسبه کنید. اگر همه فراخوانی‌های strchr مقدار NULL دادند، مقدار -1 برگردانید. این روش در طراحی یک lexer ساده برای مترجم‌ها یا مفسرها کاربرد دارد؛ دقت کنید که هنگام تفریق اشاره‌گرها نوع نتیجه را مناسب انتخاب کنید و بررسی NULL قبل از انجام عملیات اشاره‌گری را فراموش نکنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:53
دسته بندی ها: C for beginner
sara در 201 روز قبل ساعت 04:51

این وظیفه از strchr برای هر کدام از کاراکترهای '+', '-', '*', '/' استفاده می‌کند تا اولین وقوع آن‌ها را در رشته بیابد و اندیس آن را بازگرداند. با این وجود برای یافتن نخستین وقوع هر کدام به طور هم‌زمان، می‌توانید از strpbrk استفاده کنید که به‌طور مستقیم با مجموعه '+-*/' کار می‌کند و اشاره‌گر به اولین وقوع را بازمی‌گرداند. قبل از تفریق اشاره‌گرها به مبدا رشته، وجود NULL را بررسی کنید و اگر هیچ‌کدام پیدا نشد -1 بازگردانید؛ اندیس را نیز با تفاوت اشاره‌گر یافت‌شده و آغاز رشته محاسبه کنید. این رویکرد برای ساخت یک lexer ساده مناسب است و در صورت نیاز می‌تواند با توضیح‌های کوچک بهینه‌سازی شود.

گزارش

1 پاسخ

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

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