ورود

نسخه کامل مشاهده نسخه کامل : درخواست کمک برای کلاس لیست



MIG
20-03-2010, 18:31
با سلام من یه کلاس برای لیست نوشتم اما چند تا مشکل داره ممنون میشم کمکم کنید:
1. تابع سارنده ای که تعریف کردم به این فرمه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حالا وقتی یه شی می سازم تابع اضافه کردن را صدا میزنم یه گره با مقدار صفرم دارم که من نمی خوام .اگر سازنده رو بدون ارگومان (یعنی فقط خط سوم کد را داشته باشه)صدا بزنم تو خروجی یه ادرس نشون میده

2.تابع حذف هم مشکل داره به کد زیر نگاه کنید نمی تونه چیزی رو حذف کنه نه کد خودم کار می کنه نه کدی که از اینترنت گرفتم.موقع فراخوانی تابع میگه که del :indentifier not found


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

3. یه تابع برای الحاق دو لیست نوشتم که اونم مشکل داره و تابعbreak میشه



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
:41::19::19::41:

karim_medusa
28-03-2010, 09:07
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

MIG
28-03-2010, 19:00
ممنون اما من ایراد کارم رو می خواستم.دوستان من کلاسمو به صورت کلاس پایه و مشتق تعریف کردم اما نمیدونم چرا برای دسترسی به عضوهای محافظت شده خطا میده اینم کدشه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

karim_medusa
29-03-2010, 10:30
روش استفاده از اعضای محافظت شده را کامل متوجه نشده اید

به مثال زیر یک نگاهی بیندازید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

MIG
29-03-2010, 18:42
ممنون دوست عزیز،اگه بخوام به تعدادی که کاربر اونو وارد میکنه از یک کلاس شی تولید کنم چیکار باید بکنم؟

sin2x=2sinxcosx
30-03-2010, 11:28
ممنون دوست عزیز،اگه بخوام به تعدادی که کاربر اونو وارد میکنه از یک کلاس شی تولید کنم چیکار باید بکنم؟

با آرایه ها ...

karim_medusa
30-03-2010, 14:03
ممنون دوست عزیز،اگه بخوام به تعدادی که کاربر اونو وارد میکنه از یک کلاس شی تولید کنم چیکار باید بکنم؟

اگر سوالتون در امتداد برنامه ای که دارید می نویسید باشه منظورتون اینه که کاربر تعداد گره های لیست پیوندی را وارد می کند و شما میخواهید لیست را ایجاد کنید درسته؟ اگر این طوره باید از یک حلقه استفاده کنید.

اگر منظورتون چیز دیگری است توضیح بیشتری بدهید.

MIG
30-03-2010, 17:54
من یه گراف رو با لیست مجاورتی از کاربر گرفتم که هر گره تو این گراف نیاز داره لیست گره های غیرهمسایه اش را داشته باشه .از این کلاس به عنوان پایه برای یه کلاس دیگه استفاده کردم که هر شی این کلاس مشتق باید لیست گره های غیرهمسایه اش و چند تا چیز دیگه را داشته باشه .حالا می خوام به تعدادی که کاربر وارد می کنه از کلاس مشتق شده شی بسازم .تو سازنده کلاس، لیست گره های غیر همسایه اش بر اساس شناسه شی می تونه بگیره پس باید شناسه ای که کاربر وارد میکنه شماره یکی از گره هایی باشه که تو لیست مجاورتی وارد کردیم.امیدوارم منطورم را رسونده باشم

sin2x=2sinxcosx
30-03-2010, 18:31
شما می خواین کاربر تعداد گره ها رو وارد کنه و شما به تعداد اون لیست پیوندی تعریف شده توسط خودتون ایجاد کنین ؟ که یه گراف رو ذخیره کنین ؟ اگه این جوری هست باز هم می گم استفاده از آرایه ها .

MIG
31-03-2010, 07:47
نه این چیزی که شما می گید رو من انجام دادم و گراف را گرفتم ،حالا می خوام از کلاس دیگه ای که از کلاس گراف مشتق شده چند تا شی بسازم که سازنده هر گره لیست گره های غیر همسایه اون گره و... موقع ایجاد اون شی بهش نسبت می ده .میشه من برنامه ای که نوستم رو براتون ارسال کنم با صورت مساله. ببخشید من زیادی مبتدیم

karim_medusa
31-03-2010, 08:29
صورت مساله و برنامه رو بزار ببینیم قضیه چیه!

MIG
31-03-2010, 09:30
چشم اما خواهش می کنم یکی کمکم کنه اینو باید 9 روز دیگه تحویل بدم.نمی خوام که برام بنویسید فقط گام به گام منو راهنمایی کنید بنویسمش.من دانشگاه هر چی برنامه تحویل می دادم دستی بود چون اون موقع سیستم نداشتم بلد نیستم ایراد برنامه مو پیدا کنم.اول کلاس ها رو با دوست نوستم بعد اومدم از مشتق استفاده کنم اما حالا برنامه که قبلا حداقل کار می کرد حالا نمی کنه
برنامه اول:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

MIG
31-03-2010, 09:36
برنامه دوم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

MIG
02-04-2010, 17:30
ممکنه یکی جواب منو بده
من کد زیر رو نوشتم اما خطا می ده


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اینم خطاشه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

MIG
05-04-2010, 19:26
من هنوز متنظرم ممنون میشم یکی راهنمایی کنه.

sin2x=2sinxcosx
06-04-2010, 19:27
ممکنه یکی جواب منو بده
من کد زیر رو نوشتم اما خطا می ده


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اینم خطاشه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


خب برای اینکه دارین یه Node رو تو یه لیست پیوندی قرار می دین .

می خواین کدتون چیکار کنه ؟

MIG
06-04-2010, 20:46
می خوام یه لیست رو پیمایش کنه و تعداد اونو برگردونه.

خب برای اینکه دارین یه Node رو تو یه لیست پیوندی قرار می دین .

بله حرف شما درسته ! به نظر شما باید در کلاس Listode تابع هایی برای get مقادیر محافظت شده بنویسم اگه اینطوره برای اینکه لینک رو برگردونه چی باید بنویسم و تو کد بالا چطور ازش استفاده کنم؟من کد زیر رو تو کلاس پایه نوشتم درسته به نظرتون؟


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
06-04-2010, 23:03
سلام
من قبلاً برای یک تاپیک دیگر یک نمونه list نوشتم، یک نگاهی بیاندازید شاید کمکی کند:
تاپیک:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

دانلود:
support.h02.ir/fwlink/?LinkId=1006755647

karim_medusa
08-04-2010, 07:07
در مفابل هر خطی که تغییر دادم اسم خودم رو نوشتم. خط هایی هم که اضافه بودند را کامنت کردم. از جمله overload کردن operator =
نیازی نیست که کلاس List از کلاس ListNode مشتق شود (ساختار داده برای نمایش لیست پیوندی)
همچنین نیازی نیست که کلاس Graph از کلاس List مشتق شود (ساختار داده برای نمایش گراف به صورت لیست های مجاورتی )
اما کلاس LA چون سر در نیاوردم که هدفش چیه چیزی نمی تونم بگم.
در تابع اصلی برنامه برای کلاس های لیست و گراف چند خط کد برای تست نمودن عملیات انها نوشتم.



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


نمونه خروجی کد های تست به صورت زیر است :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

karim_medusa
10-04-2010, 09:11
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
10-04-2010, 21:20
سلام
با توضیحاتی که داده بودید، یک نمونه ساده حاضر کردم، نمیدانم چقدر به چیزی که میخواهید شبیه است.
نمونه دو کلاس با نام CNode و CArrayList دارد.

هر گره میتواند شامل تعداد نامحدودی زیر گره باشد که به صورت پیوندی نگاه داشته میشود.
یعنی هر گره یک پیوند از گره والد و یک پیوند از اولین گره فرزند و یک پیوند از گره بعدی خودش در لیست والد دارد.

متد Insert هم وجود دارد که اگر آرگومان index صفر داده شود در اول گره و اگر هم 0x7fffffff داده شود در آخر گره میتواند Insert کند و در محل خاص و مشخص هم که میتواند Insert کند.

اپراتور [] هم باز تعریف شده تا در هر گره بتوانید با ایندکس به زیر گره هایش دسترسی داشته باشید، همچنان از 0x7fffffff میتوانید برای دسترسی به آخرین گره استفاده کنید.

=====

خود کلاس CNode مجهز به متدی به نام RefreshFarList است که میتواند لیست گره های غیر مجاور برای همه گره ها تولید و refresh کند و در متغییر m_NFar نگاه دارد.
برای ذخیره لیست گره های غیر مجاور از CArrayList به جای لیست پیوندی استفاده است.
(اگر لیست گره های غیر مجاور هم با لیست پیوندی انجام میشد کلاس CArrayList هم نیازی نبود ولی اینطوری به نظرم بهتر و پربازده تر است)

میتوان مجدد گره های جدید را در محل های دلخواه درج (Insert) کرد و در نهایت با اجرای متد RefreshFarList از یکی از گره ها، لیست گره های غیر مجاور همه درخت بازتولید و refresh میشود.

=====

لازم به ذکر است که من تاپیک را درست مطالعه نکردم و فقط با توضیحات خودتان این را نوشتم و نمیدانم چقدر به چیزی که میخواستید نزدیک است.
شاید نیاز نباشد بگویم که کدها با VC++2008 نوشته و تست شده اند، هم کامپایل بدون خطا و هشدار انجام شده و هم تست عملی با 5 گره تو در تو نمونه درست جواب داد.

=====

کد به راحتی قابل تبدیل به C#.Net و VB.Net است و اگر دوستان تمایل داشتند و وقت داشتم میتوانم نمونه دقیقاً مشابه این دو زبان را هم قرار دهم.

موفق باشید.