Skip to content

Files

Latest commit

4c45414 · Mar 19, 2024

History

History
67 lines (51 loc) · 2.73 KB

handmade-array.md

File metadata and controls

67 lines (51 loc) · 2.73 KB
  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

بردیا که حسابی با آرایه‌های پویا و حافظه کامپیوتر آشنا شده است حالا خودش یک نوع آرایه پویا طراحی کرده و از شما می‌خواهد که در پیاده‌سازی آن به او کمک کنید.

آرایه او دو ویژگی size و capacity را دارد که به ترتیب نشان‌دهنده تعداد اعضای داخل آرایه و ظرفیت آرایه می‌باشند. این آرایه با توجه به این دو ویژگی دو قابلیت دارد:

  • در صورت داشتن ظرفیت کافی می‌تواند با تابع append عضو جدیدی را به انتهای آرایه اضافه کند؛ در این صورت size آرایه یک واحد بیشتر می‌شود.
  • در صورتی که ظرفیت آرایه کافی نبود می‌توان با تابع resize ظرفیت آن را دو برابر کرد؛ در این صورت capacity دو برابر می‌شود.

برای پیاده‌سازی این توابع برنامه شما باید ساختار زیر را داشته باشد:

void resize (int*& dynamicArray, int& capacity, int newCapacity) {
 // Code
}
void append (int*& dynamicArray, int& size, int& capacity, int value) {
 // Code
}

محدودیت

کدهای ارسالی شما بررسی می‌شوند و در صورتی که طبق خواسته سؤال پیاده‌سازی نشده باشند نمره‌ای به آنها تعلق نمی‌گیرد.

ورودی

در خط اول ورودی capacity اولیه آرایه وارد می‌شود و سپس عدد n که تعداد اعدادی است که می‌خواهیم به آرایه اضافه کنیم وارد می‌شود. در خط بعدی n عدد a 1 تا a n با یک فاصله از هم وارد می‌شوند که باید به‌ترتیب به آرایه اضافه شوند. 1 n 100 1 a i 100

خروجی

در خط اول خروجی ابتدا باید capacity آرایه و سپس size آن را چاپ کنید. سپس در خط بعدی باید اعضای آرایه چاپ شوند.

مثال

ورودی نمونه ۱

1 6
1 2 3 4 5 6

خروجی نمونه ۱

8 6
1 2 3 4 5 6

ورودی نمونه ۲

8 14
5 7 3 12 9 19 8 12 54 1 13 4 9 3

خروجی نمونه ۲

16 14
5 7 3 12 9 19 8 12 54 1 13 4 9 3