PDA

View Full Version : سوال: ایجاد اشیا به تعداد دلخواه



root88
شنبه 14 فروردین 1389, 17:25 عصر
با سلام من دوتا سوال دارم:
1. چطور زمان اجرای برنامه رو محاسبه کنم و نشون بدم؟
2. می خوام به تعداد مد نظر کاربر با استفاده از vector شی ایجاد کنم و هر یک از این اشیا یه نام متفاوت داره مثلاA1,A2,A3 و... تو حلقه for اینو چطور بنویسم؟
ممنون!

amin1softco
شنبه 14 فروردین 1389, 17:52 عصر
جواب سوال 1 در اول تابع مین زمان رو بگیر و قبل از return دوباره زمان رو بگیر و از همدیگه کمشون کن
2 . یک آرایه از کلاس ها که مربوط به هرنفر هست فکر کنم راهگشا باشه

root88
شنبه 14 فروردین 1389, 18:17 عصر
ببخشید من دومی رو متوجه نشدم .آرایه ای از کلاس ها ؟

amin1softco
شنبه 14 فروردین 1389, 18:33 عصر
ببین آرایه هر چیزی می تونه باشه می تونه از نوع رشته باشه می تونه از نوع کلاس باشه مثلا فرض کن کلاست اسمش person باشه می تونی یک آرایه از این کلاس تعریف کنی به این صورت


vector< person > V;
person V[100];

root88
شنبه 14 فروردین 1389, 19:39 عصر
بله اما من می خوام تعدادشو کاربر وارد کنه یکی از دوستان گفت که از vector استفاده کن .به کد زیر لطفا نگاه کنید


vector<A*> mylist;
mylist.resize(n);
for(i=1;i<=n;i++)
{ A *LA= new A(i);
mylist.insert(LA);
}

حالا این اشیایی که تو این لیست قرار می گیره اگه بخوام شناسه شونو با یه مقدار چک کنم چطوره ؟مثلا چطور بگم اگه شناسه شی برابر با مقدار داده ای 2است یه کاری انجام بده.
ببیند برنامه من باید یه تعدادی شی ایجاد کنه که هر شی لیستی از اسامی اشیا دیگر رو داره حالا اگه یه شی انتخاب شد مثلا شی1 باید اشیایی که در لیست اون قرار دارند انتخاب نشوند من باید اشیایی که شناسه اونها مقادیر خاصی هستند را غیرفعال کنم .چطور اینکار رو بکنم خواهش می کنم راهنمایم کنید

amin1softco
شنبه 14 فروردین 1389, 20:19 عصر
من قبلا جواب این سوالتو دادم برای هر کاری روی این لیست شما باید این لیست اشیاء رو پیمایش کنید و در حین پیمایش یک شرط رو چک کنید برای دسترسی به اشیا هم که معلومه از . (نقطه) استفاده می شه
برای مثال


//in the loop
if(V[0]->status==2)

یا


if(V[0].status==2)

برای هر کاری روی همه اشیاء باید همشون رو پیمایش کنی با یک حلقه ساده

root88
شنبه 14 فروردین 1389, 20:23 عصر
بله ممنون!من نمی تونم درست منظورم رو برسونم فکر کنم باید یه جمله بندی درست پیدا کنم.

amin1softco
شنبه 14 فروردین 1389, 20:28 عصر
بله ممنون!من نمی تونم درست منظورم رو برسونم فکر کنم باید یه جمله بندی درست پیدا کنم.
حالا بلاخره به جواب رسیدی یا نه ؟ اگه رسیدی که هیچی اما اگه نرسیدی دوباره سوال رو بیان کن دوستان دیگه ایی هم هستند که جواب بدند........

#target
شنبه 14 فروردین 1389, 22:08 عصر
شما باید با استفاده از اشاره گر این کار را کنید
سپس آدرس اشاره گر را هر باز ایجاد در یک لیست پیوندی قرار دهید و ...




for (int i = 0 ; i < uvalue ; i++)
{
yourclass* t = new vector;
//Store t address in a list
}



اگر هم با Vector میخوای Refrence در لینک زیر قرار داره
http://www.cplusplus.com/reference/stl/vector

root88
شنبه 14 فروردین 1389, 22:29 عصر
شما باید با استفاده از اشاره گر این کار را کنید
سپس آدرس اشاره گر را هر باز ایجاد در یک لیست پیوندی قرار دهید و ...




for (int i = 0 ; i < uvalue ; i++)
{
yourclass* t = new vector;
//Store t address in a list
}


از لطف و توجه دوستان ممنون! اگه اجازه بدید من کل برنامه رو توضیح بدم :
1.ورودی برنامه گرافه
2.تو این برنامه جند تا کلاس وجود دارد مثل A,B,Cکه بصورت مشتق از هم هستند.در واقع هر شی از کلاسCباید لیست گره های غیر همسایه اش رو داشته باشه خوب،ابتدا کاربر گراف رو وارد می کنه به صورتی که اول شماره گره رو وارد می کنه و بعد گره های همسایه اش این اطلاعات در یه لیست مجاورتی ذخیره میشه و با یه تابع برای هر گره لیست گره های غیر همسایه هر گره محاسبه میشه و یه تعداد کار دیگه ،اینها همه در کلاسB قرار دارند که از کلاس لیست پیوندی مشتق شده و اون هم از کلاس لیست نود مشتق شده .این تعداد کلاسهای این برنامه است.
تو کلاس C که از اشیا این کلاس در Main استفاده می کنیم یه سری تابع دیگه هم هست .الگوریتم اینه که یکی از این اشیا به تصادف انتخاب بشه و اونم یکی از گره های لیستشو براساس یه معیاری انتخاب کنه که این گره در واقع شناسه یکی از اشیا ایجاد شده باید باشه(یعنی یه گره دیگه از گراف انتخاب شه) این کار باید اونقدر ادامه پیدا کنه که تو هیچ لیستی مربوط به اشیا ایجاد شده گره فعالی نداشته باشیم یعنی فیلد فعال آنها را غیرفعال باشن. حالا من چند تا مشکل دارم یکیشون همون مشکل بالاست دومی اینکه تو کلاس لیست که از کلاس لیست نود مشتق شده من نمی تونم با شیی از نوع لیست ،یه لیست رو پیمایش کنم اگر همه از نود لیست نود یه اشاره گر بکیرم میگه که به داده های محافظت شده نمی تونه دسترسی داشته باشه
اینم کدشه"


int Count()
{
List *t;
t=first
int count=0;
for(t;t!=NULL;t=t->link)
{
count++;

}


اینم خطاش



'=':cannot convert from ListNode* to List*

ببخشید زیاد شد واقعا گرفتارم

root88
دوشنبه 16 فروردین 1389, 17:34 عصر
دوستان ممکنه یه مثال از تابعtime بذارید اینکه زمان سیستم رو چطور بگیره ؟