المپدیا

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

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره‌ی تابستان:دوره‌ی ۱۹:برنامه‌نویسی:سوال ۵

سوال ۵

کوتاه پاسخ دهید.

  1. کلاس ‎struct Rect{ double w‎, ‎h; };‎ را برای نگه‌داری ابعاد یک مستطیل در برنامه‌ای داریم. می‌خواهیم به این برنامه قابلیت محاسبه اندازه‌ی قطر یک مستطیل را نیز اضافه کنیم. برای این‌کار تابع ‎CalcDiam()‎ را می‌توانیم به‌صورت یک member function (درون کلاس) و یا یک تابع مستقل که یک ‎Rect‎ به عنوان پارامتر ورودی می‌گیرد (نظیرdouble CalcDiam(Rect r) ‎) بنویسیم. این دو روش را از منظر استفاده مجدّد ‎(Reusability)‎ مقایسه کنید.
  2. می‌خواهیم تعدادی از ‎Rect‎های قسمت قبل را مرتب ‎sort)‎) کنیم. برای این منظور قصد داریم عملگر ‎<‎ را روی اعضای این کلاس طوری تعریف کنیم که مستطیل‌ها را بر اساس عرض ‎(w)‎ و در صورتی تساوی عرض، براساس طول ‎(h)‎ مرتب کند. دو روش ممکن ارسال پارامتر به عملگر ‎<‎ را بنویسید و بیان‌ کنید که کدام‌یک سریع‌تر است و چرا؟
  3. دو مورد کاربرد ‎: (دو نقطه) و دو مورد کاربرد :: (دو تا دو نقطه!) در زبان ‎C++‎ را ذکر کنید.
  4. کاربرد ‎this‎ در بدنه‌ی یک تابع عضو کلاس ‎(member function)‎ چیست؟ مثالی بزنید که در آن ملزم به استفاده از this‎‎ باشیم.

ابزار صفحه