از پارسکدرز بیشترین بهره را ببرید و رویای کاری خود را زندگی کنید.
دو ماه پیش منتشر شده
تعداد بازدید: 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روز
وضعیت مناقصه
بسته
درباره کارفرما
عضویت دو ماه پیش
قادر به انجام این پروژه هستید؟
مهلت ارسال پیشنهاد قیمت برای این پروژه تمام شده است
به رایگان یک حساب کاربری بسازید
مهارتها و تخصصهای خود را ثبت کنید، رزومه و نمونهکارهای خود را نشان دهید و سوابق کاری خود را شرح دهید.
به شیوهای که دوست دارید کار کنید
برای پروژههای دلخواه در زمان دلخواه پیشنهاد قیمت خود را ثبت کنید و به فرصتهای شغلی منحصر به فرد دسترسی پیدا کنید.
با اطمینان دستمزد دریافت کنید
از زمان شروع کار تا انتهای کار به امنیت مالی شما کمک خواهیم کرد. وجه پروژه را از ابتدای کار به امانت در سایت نگه خواهیم داشت تا تضمین شودکه بعد از تحویل کار دستمزد شما پرداخت خواهد شد.
میخواهید شروع به کار کنید؟
یک حساب کاربری بسازید
بهترین مشاغل فریلنسری را پیدا کنید
رشد شغلی شما به راحتی ایجاد یک حساب کاربری رایگان و یافتن کار (پروژه) متناسب با مهارتهای شما
است.
پیدا کردن کار (پروژه)
تماشای دمو روش کار