المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۲۰:برنامه نویسی:سوال ۴

کوتاه پاسخ

‎ به سؤالات زیر، هر مورد در حدّ یک جمله یا ‎ یک پارگراف پاسخ دهید.

  1. اصطلاحات ‎Null-Terminated و ‎Stack$ $overflow‎ و Prototype‎ را تعریف کنید.
  2. روش‌های ارسال پارامتر به تابع به دو دسته کلّی تقسیم می‌شوند. یکی از این دسته‌ها دسته روش‌های Call By Reference است. ‎$a$‎)روش دوم چیست؟ $‎b$‎) تفاوت این دو روش در چیست؟ (دو مورد ذکر کنید) $‎c$‎) دو روش پیاده‌سازی Call By Reference‎ با توجه به آموخته‌های شما در درس کدامند؟ $‎d$‎) تفاوت این دو روش پیاده‌سازی در چیست؟ (دو مورد ذکر کنید).
  3. توصیه می‌شود که طول آرایه‌های یک برنامه ‎MAXN‎ به‌صورت پارامتریک (یک پارامتر ثابت) تعریف شود. ‎$a$‎)دو روش مناسب برای این کار (تعریف و ذخیره کردن ‎MAXN‎ با توجه به آموخته‌های شما در درس کدامند؟ ‎$b$) آیا این دو روش از نظر سرعت در زمان اجرا با هم تفاوت دارند؟ $c$‎) شما چه روشی را توصیه می‌کنید؟ چرا؟
  4. مفهوم ‎Capacity‎ در یک ‎vector‎ به چه معناست؟ آیا امکان دارد در حالتی ‎.size()‎ یک ‎vector‎ بیش‌تر از ‎.capacity() بشود؟
  5. فرض کنید می‌خواهیم یک ‎vector‎ به‌طول ‎۱۰۰‎ بسازیم که اعداد صفر تا ‎۹۹‎ در آن قرار بگیرد. برای این منظور دو راه مختلف (دو نحوه مختلف وارد کردن اعداد به ‎vector‎) را پیشنهاد کنید. آیا این دو روش از نظر پیچیدگی زمان اجرا (اصطلاحاً ‎Order‎) با هم تفاوت دارند؟ از نظر زمان اجرای دقیق چه طور؟
  6. می‌خواهیم برنامه‌ای بنویسیم که گراف‌های تصادفی تولید کند. این برنامه پارامترهایی برای ساخت گراف نظیر تعداد رئوس، درصد وقوع یال‌ها، تعداد مؤلفه‌های همبندی، میانگین وزن یال‌ها، حداقل و حداکثر وزن یال‌ها و … دارد. با کمک این برنامه قرارست ‎۱۰۰‎ گراف تصادفی با مقادیر مختلف پارامترها ساخته شود.

‎۴‎ روش ممکن برای ارسال این پارامترها به برنامه ذکر کنید. برای هر روش یک مزیت نام ببرید که آن روش را بهتر از سایر روش‌ها می‌داند. برای هر روش یک عیب هم نام ببرید که نشان بدهد آن روش بهترین روش مطلق نیست. مزایا و معایب این ‎۴‎ روش نباید با هم یکسان باشد.


ابزار صفحه