پارس‌کدرز چگونه کار می‌کند؟

از پارس‌کدرز بیشترین بهره را ببرید و رویای کاری خود را زندگی کنید.

پارس‌کدرز خریداران یا کارفرمایان را به مجری‌ها /فریلنسرهای خبره‌ای متصل می‌کند که برای انجام پروژه آماده هستند.

پیاده سازی قابلیت بازگشت در کلاس StringList

دو ماه پیش منتشر شده

تعداد بازدید: 49

کد پروژه: 523622


شرح پروژه

در این پروژه، شما باید یک کلاس به نام `StringList` را پیاده‌سازی کنید که شباهت زیادی به کلاس `PlayList` دارد، اما به جای ذخیره آهنگ‌ها، رشته‌های متنی (strings) را نگه‌داری می‌کند. وظیفه اصلی شما این است که قابلیت "بازگشت" (undo) را به این کلاس اضافه کنید تا بتوان تغییرات انجام شده در لیست را برگرداند.

### قوانین اصلی پیاده‌سازی:
1. نباید هیچ یک از متدهای موجود در کلاس را حذف کنید یا امضای آنها را تغییر دهید.
2. می‌توانید تغییراتی در پیاده‌سازی متدهای موجود بدهید، اما عملکرد آنها نباید تغییر کند.
3. باید قابلیت undo را با استفاده از یک پشته (stack) پیاده‌سازی کنید که فقط داخل کلاس `StringList` قابل دسترسی باشد.
4. این پشته را باید با یک آرایه پویا (dynamic array) پیاده‌سازی کنید که در ابتدا ظرفیت آن ۴ است و وقتی پر می‌شود، ظرفیت آن دو برابر می‌شود.
5. متد undo نباید خودش undo شود (نیازی به قابلیت redo نیست).

### نحوه عملکرد undo:
هر بار که یکی از متدهای "undoable" فراخوانی شود، باید عملیات معکوس آن متد به بالای پشته اضافه شود. زمانی که متد `undo()` فراخوانی شود، عمل معکوس از پشته برداشته شده و اعمال می‌شود تا تغییر اخیر لغو شود.

مثال‌ها:
- برای `insertBefore`، اگر یک عنصر به لیست اضافه کنید، باید عمل حذف آن عنصر را به پشته اضافه کنید تا بتوانید با فراخوانی `undo()`، آن عنصر را حذف کنید.
- برای `set`، اگر مقداری را تغییر دهید، مقدار قبلی باید در پشته ذخیره شود تا با `undo()` به حالت قبل برگردد.
- برای `remove`، اگر عنصری را حذف کنید، آن عنصر باید در پشته ذخیره شود تا با `undo()` مجدداً به لیست برگردانده شود.

### نحوه ارزیابی:
این پروژه ۴۰ نمره دارد:
- پیاده‌سازی undo: ۲۸ نمره
- موفقیت در اجرای تست‌ها: ۴ نمره
- مدیریت حافظه: ۴ نمره
- سبک کدنویسی: ۴ نمره

شما باید برنامه را به‌گونه‌ای بنویسید که با استفاده از `valgrind`، هیچ خطای حافظه‌ای نداشته باشد و قابل کامپایل در محیط لینوکس باشد.

شما باید پروژه خود را به صورت یک فایل فشرده (.zip) ارسال کنید که فقط شامل فایل‌های زیر باشد:

1. **StringList.h**: فایل هدر که شامل تعریف کلاس `StringList` و هر تابع یا ساختار کمکی است که اضافه کرده‌اید.
2. **StringList.cpp**: فایل پیاده‌سازی که شامل تمام متدهای `StringList` و پیاده‌سازی قابلیت undo است.

فایل یا پوشه دیگری نباید در فایل فشرده قرار داده شود.

شرح کامل به صورت عکس همراه با فایل های مورد نیاز ضمیمه شده است

این پروژه شامل 7 فایل مهم است، لطفا قبل از ارسال پیشنهاد حتما نسبت به بررسی این فایل اقدام فرمایید.

مهارت ها و تخصص های مورد نیاز


بودجه

300,000 تومان تا 750,000 تومان

مهلت برای انجام

2روز

وضعیت مناقصه

بسته


درباره کارفرما

عضویت دو ماه پیش

4 پروژه ثبت شده ،
0 پروژه در حال انجام ،
0 پروژه آماده دریافت پیشنهاد ،
نرخ پذیرش پیشنهاد 75%

برای پیدا کردن پروژه‌های مشابه ثبت نام کنید و پروفایل خود را بسازید.

ورود با گوگل
یا
نام نباید خالی باشد.
نام خانوادگی نباید خالی باشد.

نیاز به استخدام فریلنسر یا سفارش پروژه مشابه دارید؟

سفارش پروژه مشابه

قادر به انجام این پروژه هستید؟

ثبت نام کنید

مهلت ارسال پیشنهاد قیمت برای این پروژه تمام شده است

سری به پروژه‌های مشابه بزنید

روش کار در پارس‌کدرز

به رایگان یک حساب کاربری بسازید

مهارت‌ها و تخصص‌های خود را ثبت کنید، رزومه و نمونه‌کارهای خود را نشان دهید و سوابق کاری خود را شرح دهید.

به شیوه‌ای که دوست دارید کار کنید

برای پروژه‌های دلخواه در زمان دلخواه پیشنهاد قیمت خود را ثبت کنید و به فرصت‌های شغلی منحصر به فرد دسترسی پیدا کنید.

با اطمینان دستمزد دریافت کنید

از زمان شروع کار تا انتهای کار به امنیت مالی شما کمک خواهیم کرد. وجه پروژه را از ابتدای کار به امانت در سایت نگه خواهیم داشت تا تضمین شودکه بعد از تحویل کار دستمزد شما پرداخت خواهد شد.

می‌خواهید شروع به کار کنید؟

یک حساب کاربری بسازید


بهترین مشاغل فریلنسری را پیدا کنید
رشد شغلی شما به راحتی ایجاد یک حساب کاربری رایگان و یافتن کار (پروژه) متناسب با مهارت‌های شما است.

پیدا کردن کار (پروژه)

تماشای دمو روش کار