الرئيسيةجستجوثبت نامورود

 

 مسابقات برنامه نویسی با جایزه

اذهب الى الأسفل 
نويسندهپيام
sajjadgameactor
Admin
Admin
sajjadgameactor

تعداد پست ها : 122
دانشگاه : صنعتی همدان
رشته دانشگاهی : فناوری اطلاعات
سن : 28
محل سکونت ahvaz
تاریخ عضویت : 2010-08-28

مسابقات برنامه نویسی با جایزه Empty
پستعنوان: مسابقات برنامه نویسی با جایزه   مسابقات برنامه نویسی با جایزه Empty2010-09-05, 09:49

دانشگاهیان محترم که برنامه نویسی پیشرفته رو هم خوندن برای اینک دوباره برنامه نویسی یادتون بیاد و ببینیم توی این چند ترم چی یاد گرفتیم یه مسابقه ی برنامه نویسی با جایزه بگذاریم(البته جایزه یه کارت شارژ 5 هزار تومانی ناقابل هست از من که انتظار بیشتری ندارید مسابقات برنامه نویسی با جایزه 269138 و فقط برای راه انداختن مسابقست و ارزش مادی زیادی نداره )
سطح سوالات جوری هست که شاید بتونه شما رو به چالش بندازه
اما نحوه ی امتیاز دهی : مدت این دور از مسابقه یک هفته است جواب ها رو همینجا بنویسید و نیازی نیست که هر کس در هر پست حتما به تمام سوالات پاسخ بده شما به هر سوالی که فکر میکنید بلد هستید میتونید پاسخ بدید در صورتی که اولین نفری باشید که پاسخ درست را داده اید امتیاز ان سوال برای شما ثبت می شود و به کسی که بالاترین امتیاز را در پایان مسابقه داشت جایزه داده میشه
سوالات :
۱) چه طور میشه که یک آرایهٔ ارجاعی (reference array) داشت؟ کاربردش چیه ؟ چرا نمی‌شه یک ارجاع به خود آرایه (reference to array) داشت ؟
۲) یک template class چه طور در هر translation unit نـمــونـه‌سـازی می‌شــود؟ این رفتار آنها چه مزیتها و ایرادهایی دارد؟
۳) ++C از چه نـوع الگوی طـراحـی بـرای مدیـریت حافظه استفاده می‌کنه؟ چرا ++C زباله‌روب ندارد؟ چه طور یک مدیـر حـافظـهٔ همراه با زبـاله‌روب پیاده‌سازی میتوان کرد، در حالیکه بتوان از STL هم بطور مستقیم استفاده کرد؟
۴) استفاده از throw چه تاثیراتی بر روی performance دارد؟ استفاده از try...catch چطور؟
۵) چه طور می‌توان یک typedef از نوع تـوابع را ساخت؟کاربرد؟ چرا نمی‌توان متغیری از این نوع ایجاد کرد؟
۶) کلاس‌های والد مجازی (virtual base classes)، چگونه در سلسله مراتب ارث‌بری نمونه‌سازی می‌شوند (راهنمایی : منظور از نمونه‌ سازی صدازدن تابع سازنده هست) (با چه ترتیبی و توسط چه کلاسی)؟

_________________________________________________


به خدا نگو که مشکلات بزرگی دارم
به مشکلات بگو که خدای بزرگی دارم
بازگشت به بالاي صفحه اذهب الى الأسفل
gggggggg
مدیر تالار برنامه نویسی
مدیر تالار برنامه نویسی
gggggggg

تعداد پست ها : 118
دانشگاه : صنعتی همدان
رشته دانشگاهی : فناوری اطلاعات
سن : 29
محل سکونت همدان
تاریخ عضویت : 2010-09-05

مسابقات برنامه نویسی با جایزه Empty
پستعنوان: رد: مسابقات برنامه نویسی با جایزه   مسابقات برنامه نویسی با جایزه Empty2010-09-08, 07:20

سجاد تو که نمی خوای کارت شارژ بدی این سوالا چیه نوشتی
حداقل سوال می ذاشتی برا حل کردن یا کلمه می گفتی جمله می ساختیم. مسابقات برنامه نویسی با جایزه 769143
می دونی اخه من همیشه ادبیاتم 20 بود.
بازگشت به بالاي صفحه اذهب الى الأسفل
IT88
در حال پیشرفت
در حال پیشرفت
IT88

تعداد پست ها : 9
دانشگاه : صنعتی همدان
رشته دانشگاهی : فناوری اطلاعات
تاریخ عضویت : 2010-09-10

مسابقات برنامه نویسی با جایزه Empty
پستعنوان: رد: مسابقات برنامه نویسی با جایزه   مسابقات برنامه نویسی با جایزه Empty2010-09-10, 17:07

منم بازی می دید.

این از ارایه ارجاعی
#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
int *a;
a = new int[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;
int* &x = a;
cout<< a[0];

}
کاربردش رو نمی دونم.
چون ارجاع خودش متغیر مستقل نیست هر
متغیر دارای فضای ذخیره سازی و ادرس مستقلی است
اما ارجاع از فضا و ادرس متغیر دیگه ای استفاده می کنه.
-----------------------------------------------------------------
وقتی ما یک الگوی کلاس می سازیم در زمان ران شدن برنامه کامپایلر یک نسخه از
نوع مورد نظر ما می سازه و همینطور کار رو به تعداد مورد نظر ما انجام می ده.
مزایا
مزیت اینه که ما می تونیم با یک نوع کد انواع مختلف داده رو پردازش کنیم.
معایب:
خوب همونجوری که کامپایلر چند نوع از تابع مورد نظر برا ما می سازه
طبیعتن فضای زیادی اشغال می کنه.
------------------------------------------------------------------
throw
مربوط می شه به بخش استثناها یا exception
وقتی برنامه داره ران می شه یا در حال ران شدن هستش
ممکنه به جایی برسه که دیگه نتونه ادامه بده مثل تقسیم بر صفر
پس در اینجا برنامه خود به خود می اد بیرون
بدونه اینکه فضاهای گرفته شده رو ازاد کنه و حافظه ما
خراب می شه
try{
. . .
}
catch(...)
{
...
}
اگر جایی رو که استثنا رخ داده درون try
باشه
برنامه قبل از خروج وارد catch
مربوط به اون try
می شه و می تونیم در اینجا فضاهای گرفته شده رو ازاد کنیم
و بعد از برنامه خارج شیم یا نه
می تونیم یه مغدار پیش فرض برا اون صفره در نظر بگیریم
و برنامه رو ادامه بدیم
چون در برنامه های تجاری اگه برنامه خودبه خود خارج شه
دیگه ارزشی نداره.
-----------------------------------------------------------
چون typdef
کلاس نیست که ازش متغیر ساخت فقط
typdef
فقط کارش تغییر نام انواع داده هستش
همون طوری که می دونیم int درواقع یک کلاس هست که ما ازش نمونه سازی می کنیم.
کار برد.
افزایش قابل حمل بودن زبان
یعنی مثلن کدی رو که در یک ماشین نوشتیم برا اجراش تو
یه ماشین دیگه می تونیم از typdef استفاده کنیم
مثلن turbo c++ متغیر bool نداره ولی ما می تونیم
با یه typdef ساده این کارو انخام بدم.

موجب می شه برا انواع داده طولانی اسم مناسبتری انتخاب کرد.
------------------------------------------------------------
فرض کنیم 3تا کلاس داریم به نامهای
1 - 2 - 3
کلاس 3 از 2 و 2 از 1 ارث بری دارند
اگه ما یک شی از کلاس 3 بسازیم
وقتی می خواد وارد سازنده کلاس 3 بشه میره اول سازنده کلاش 2
وقتی می خواد وارد سازنده کلاس 2 بشه می ره وارد سازنده کلاس 1 می شه
و این دفعه وارد بدنه سازنده 1 می شه وقتی اونو اجرا کرد وارد سازنده
کلاش 2 می شه و بدنه اونو اجرا می کنه بعدش وارد سازنده
کلاس 3 میشه و بدنه اونو اجرا می کنه
به طور خلاصه
از نظر اجرای بدنه ابتدا 1 بعد 2 و بعد 3 اجرا می شه
ولی برا صدا زدن مخرب هاش کاملن برعکس یعنی اونی که اول بدنش اجرا می شه
اخرش مخربش صدا زده می شه.
--------------------------------------------------------------
سوال 3 رو الان نمی تونم دقیق جواب بدم ولی بعدن جوابش می دم.
بازگشت به بالاي صفحه اذهب الى الأسفل
IT88
در حال پیشرفت
در حال پیشرفت
IT88

تعداد پست ها : 9
دانشگاه : صنعتی همدان
رشته دانشگاهی : فناوری اطلاعات
تاریخ عضویت : 2010-09-10

مسابقات برنامه نویسی با جایزه Empty
پستعنوان: رد: مسابقات برنامه نویسی با جایزه   مسابقات برنامه نویسی با جایزه Empty2010-09-11, 12:03

من که قید سوال 3 رو زدم و الان دارم به جایزم فکر میکنم
فکر می کنم بعد از اینکه گرفتمش
چه کارایی می تونم باهاش بکنم.
وای خدا مسابقات برنامه نویسی با جایزه 163731
بازگشت به بالاي صفحه اذهب الى الأسفل
?????
مهمان
Anonymous


مسابقات برنامه نویسی با جایزه Empty
پستعنوان: رد: مسابقات برنامه نویسی با جایزه   مسابقات برنامه نویسی با جایزه Empty2010-09-11, 13:37

میشه به زبون ما صحبت کنین ببینیم اینا چیه؟
به قول اقای
ggggg
جمله سازی بهتره ها
ولی هرکی برد نصف نصف
بازگشت به بالاي صفحه اذهب الى الأسفل
sajjadgameactor
Admin
Admin
sajjadgameactor

تعداد پست ها : 122
دانشگاه : صنعتی همدان
رشته دانشگاهی : فناوری اطلاعات
سن : 28
محل سکونت ahvaz
تاریخ عضویت : 2010-08-28

مسابقات برنامه نویسی با جایزه Empty
پستعنوان: رد: مسابقات برنامه نویسی با جایزه   مسابقات برنامه نویسی با جایزه Empty2010-09-11, 15:05

خوب بلاخره یک نفر پیدا شد که جواب این سوالات رو هر چند ناقص تا حدودی بده ولی هنوز هویت اصلیش کشف نشده یک it88 پسر در دانشگاه صنعتی همدان که من نمیتونم حدس بزنم کیه مسابقات برنامه نویسی با جایزه 421789 با توجه به تمام شدن زمان مسابقات ایشون حتی اگر نصف سوال هم درست جواب داده باشن برنده خواهند بود و با توجه به اینکه از بچه های خودمون هست جایزه حضوری بهش تحوبل داده خواهد شد اگر هم میتونه فعالیتش رو بیشتر کنه مدیریت یک قسمت رو بر عهده بگیره
اما جواب درست سوالات که به تدریج همینجا قرار میدم و با جواب ایشون هم مقایسه میشه
جواب سوال 1 :
ساخت ارایه ارجاعی به همان ترتیب هست که گفته شده ولی همون طور که گفتن کاربردش رو نمیدونستن که آرایه ی پویا تعریف کردند کاربرد در ارایه های با طول مشخص در قالب ها
جواب کامل
آرایهٔ ارجاعی بصورت زیر تعریف می‌شود:
Type (&ref_arr)[LEN] = arr;
Type نوع اعضای مورد ارجاع آن و LEN هم طول آن است. مثال:
int arr[3] = {1, 2, 3};
int (&ref_arr)[3] = arr;
int ref_len = sizeof(ref_arr);
int ref_element = ref_arr[1];


کاربرد؟ در صورتی که طول آرایه در زمان کامپایل مشخص باشد (همانند آرایه‌های معمولی)، استفاده از این نوع مناسب است، می‌توان پارامتر ورودی تابع را از این نوع تعریف کرد و توسط عملگر sizeof به اندازهٔ آن دست یافت. معمولا در صورت استفاده از templateها، کاربردی‌تر هستند. در غیر اینصورت، استفاده از اشاره‌گر برای دسترسی به آرایه و ورودی توابع مناسب است و در اینصورت باید اندازهٔ آرایه را به عنوان یک پارامتر مجزا به تابع بفرسید.
چرا نمی‌توان ارجاعی به خود آرایه (reference to array) داشت؟ چون آرایه‌ها همواره به عنوان یک اشاره‌گر هستند . یعنی آرایه‌ای به نام adp که اعضای آن از نوع int باشد، در اینصورت، خود آرایه از نوع *int خواهد بود، مثال:
int adp[3] = {1, 2, 3};
int* adp_ptr = adp;


پس برای ارجای به آرایه، نمی‌توان نوع آن را یعنی *int را به &int تبدیل کرد (کاملاً غیر عملی). پس برای ارجاع به یک آرایه، در حقیقت باید ارجاعی به اشاره‌گر نوع آن داشت یعنی:
const int*& adp_ref = adp;

نوع &*int را از راست به چپ اینطور بخوانید: «ارجاعی به اشاره‌گری از نوع int»

_________________________________________________


به خدا نگو که مشکلات بزرگی دارم
به مشکلات بگو که خدای بزرگی دارم
بازگشت به بالاي صفحه اذهب الى الأسفل
IT88
در حال پیشرفت
در حال پیشرفت
IT88

تعداد پست ها : 9
دانشگاه : صنعتی همدان
رشته دانشگاهی : فناوری اطلاعات
تاریخ عضویت : 2010-09-10

مسابقات برنامه نویسی با جایزه Empty
پستعنوان: رد: مسابقات برنامه نویسی با جایزه   مسابقات برنامه نویسی با جایزه Empty2010-09-11, 16:59

سلام.
IT88 = gggggggg
من همون ggggggg
هستم فقط خواستم این یکی اسمم رو بهتر معرفی کنم.
جایزش رو هم تقدیم می کنم به خودت که زودتر
بیای همدانو ببینمت.
بازم بگین همدان شهر من یه تومنم یه تومنه. مسابقات برنامه نویسی با جایزه 24237
بازگشت به بالاي صفحه اذهب الى الأسفل
 
مسابقات برنامه نویسی با جایزه
بازگشت به بالاي صفحه 
صفحه 1 از 1

صلاحيات هذا المنتدى:شما نمي توانيد در اين بخش به موضوعها پاسخ دهيد
تالار گفتگوی دانشگاه صنعتی همدان :: تالار عمومی :: پاتوق :: تریبون آزاد-
پرش به: