ماشین متنی


در این سوال از شما خواسته شده است تا یک ماشین متنی کوچک با مجموعه‌ای از قابلیت های ساده را پیاده‌سازی نمایید. روال کار بدین صورت است که در آغاز کار برنامه یک رشته متنی اولیه(به طول حداکثر 1000 کاراکتر) را از ورودی دریافت می‌کند. در ادامه تا زمانی‌ که دستور خروج را دریافت کند در هر نوبت کاربر درخواست یک عملیات بر روی رشته متنی می‌دهد. عملیات ها به شرح زیر تعریف شده‌اند:

دستور ورودی توضیحات و خروجی
SHIFT-R N تمام کاراکترهای عبارت را به صورت چرخشی N واحد به سمت راست منتقل می‌کند.
SHIFT-L N تمام کاراکترهای عبارت را به صورت چرخشی N واحد به سمت راست منتقل می‌کند.
EXTEND N به انتهای رشته موجود N کاراکتر جدید اضافه می‌کند و به عنوان مقدار پیشفرض کاراکترها، ستاره(*) قرار می‌دهد.
SHRINK N از انتهای رشته، N‌ کاراکتر حذف می‌کند. درصورتی که طول رشته کمتر از N‌ بود،‌رشته حاصل یک رشته خالی خواهد بود.
REVERSE رشته را معکوس می‌کند.
PUT I C حرف مکان Iام رشته را با حرف C جایگزین می‌کند.توجه داشته باشید که شماره مکان‌ها از یک آغاز می‌شود و I ‌همواره کوچکتر مساوی طول رشته خواهد بود.
PRINT رشته فعلی را چاپ می‌کند و به خط بعد می‌رود.
EXIT اتمام برنامه

برنامه شما تنها به ازای عملیات چاپ خروجی خواهد داشت و به ازای سایر دستورات صرفاً عملیات موردنظر را برروی رشته متنی انجام می‌دهد. در پیاده‌سازی این سوال، شما باید به ازای تمامی دستورات(به جز خروج) یک تابع در نظر بگیرید و انجام عملیات توسط فراخوانی آن تابع انجام بگیرد. به عنوان نمونه امضای توابع باید به این صورت باشد:

void Extend( char *string, int _extendedLength);
Plain text

مثال:

ورودی نمونه ۱

initial string
PRINT
EXTEND 2
SHIFT-R 3
PRINT
PUT 3 o
REVERSE
SHRINK 2
PRINT
EXIT
Plain text

خروجی نمونه ۱

initial string
g**initial strin
nirts laitinio
Plain text

ورودی نمونه ۲

Test
PRINT
SHRINK 20
PRINT
EXTEND 2
PRINT
EXIT
Plain text

خروجی نمونه ۲

Test

**
Plain text
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.