PDA

View Full Version : سوال: آرایه های چندبعدی با generice ها



Mori Bone
چهارشنبه 14 خرداد 1393, 18:05 عصر
سلام من فایل متنی زیر رو ضمیمه کردم می خوام شما به من یه روش برای واکشی از اون رو به من پیش نهاد بدید.
من یه آرایه دوبعدی با طول متغیر باید داشته باشم که اطلاعاتم رو توش ذخیره کنم.
119877
مثلا:
کشور ها
{
ایران
ایتالیا
...
}
اسامی
{
حسن
جعفر
..
}

Mori Bone
چهارشنبه 14 خرداد 1393, 18:36 عصر
جانه من جواب بدین! فوریه

aliagamon
چهارشنبه 14 خرداد 1393, 19:20 عصر
خب شما لیست رو بر اساس ">" split کن بعد بیا همون اسپلیت هارو بر اساس اینتر اسپلیت کن .... بعد همرو بریز تو لیست دیگه ...
یه سوال این واسه اسم فامیله ؟ :لبخند:بعدا بشینم بخونم لیستشو به درد بازی میخوره ...

Mori Bone
چهارشنبه 14 خرداد 1393, 19:24 عصر
نه این بازی حدس بزنه فردا همین جا آپلودش می کنم
میشه توضیح بدین

Mori Bone
چهارشنبه 14 خرداد 1393, 19:28 عصر
من تا الان این کارو کردم.
همی کلمه هارو می ریختم تویه generic list.
بعد بع کدومشو به صورت رندوم انتخاب می کردم و به کاربر نشون میدادم. همین.
حالا می خوام به کاربر هم کلمه ی تصادفی رو نشون بدم و هم بگم که چیه(یعنی اسم انسانه، کشوره، غذاس)

aliagamon
چهارشنبه 14 خرداد 1393, 19:44 عصر
یعنی الان شما کلمات :


<شغل
<اسم

و غیره هم تو لیست گذاشتین ؟
اگه بزارین بهتره .... چون میتونید از اونا به عنوان bookmark استفاده کنید یعنی index همشونو پیدا کنید ... بعد بر اساس این میشه اینو در اورد که از شماره ی مثلا 100 تا 340 اسم هستن ... و با یه شرط میتونید نوعشو بفهمید ...
البته روش اینکه هر کدوم رو بریزین تو یه لیست شاید بهتر بود ... اما این هم جواب میده ... :لبخند:
هر دو راه یه برتری هایی دارن برای مثال یکی نیاز به یه عدد رندوم اضافه داره ... یکی دیگه همه رو با هم تو یه لیست داره و تفکیکش سخت تره ... ولی هر دو راه خوبه ...

mehrdad1991h
چهارشنبه 14 خرداد 1393, 19:44 عصر
کل مشکلت اینه که داری از string استفاده میکنی چون نمیتونه طول متغیر داشته باشه
شما بیا از لیست استفاده کن و همین کار را انجام بده مشکلت حل میشه
اگر نیاز به توضیح بیشتر داری دقیقا بگو میخوای چیکار کنی تا کد بزنم برات اگر ان بودم...
----ادیت-----
لیست ها را جدا جدا در نظر بگیر که کارت راحت تر باشه چون میخوای رندوم بیاری جدا باشن راحت تره

Mori Bone
چهارشنبه 14 خرداد 1393, 19:54 عصر
کل مشکلت اینه که داری از string استفاده میکنی چون نمیتونه طول متغیر داشته باشه
شما بد منظور منو فهمیدید. من آرایم طولش معلوم نیس. به موقع 100 تاس یه موقع 5تا


شما بیا از لیست استفاده کن و همین کار را انجام بده مشکلت حل میشه
من از لیست استفاده می کنم.


یعنی الان شما کلمات :


1

2
3

<شغل
<اسم







و غیره هم تو لیست گذاشتین ؟
خیر من طبق اینا می خوام آرایه درس کنم.

به خدا vb6ش رو بلدم بنویسم تو این c# نمی تونم.
این vb6ش:
dim heads(3,100) as string 'غذا یا کشور یا ..
msgbox heads(0,5) 'که مثلا قرمه سبزی رو میده که من 0 رو واسه غذا گرفتم و مثلا 100 قرمه سبزیه

mehrdad1991h
چهارشنبه 14 خرداد 1393, 20:07 عصر
ببین الان این را

string[] a = new string[5];
string[] b = new string[15];
string[] c = new string[10000];
List<string[]> list = new List<string[]>();
list.Add(a);
list.Add(b);


حالا 2 بعدی هم بود باز همینجور و .....

Mori Bone
چهارشنبه 14 خرداد 1393, 20:14 عصر
string[] a = new string[5];
string[] b = new string[15];
string[] c = new string[10000];
List<string[]> list = new List<string[]>();
list.Add(a);
list.Add(b);

از این لطفا یه معال دو بعدی می زندید
شما اینجا طول ثابت دادین به آرایه ولی من طوله متغیرم در زمان اجرای برنامه متغیره

aliagamon
چهارشنبه 14 خرداد 1393, 21:08 عصر
براتون نوشتمش ... البته با لیست و بدونه ارایه دو بعدی انجام دادم فکر کنم اینطوری بهتره با ارایه دو بعدی بد تر میشد ...

StreamReader sr = new StreamReader(@"C:\Users\Ali\Downloads\words.txt");
string str = sr.ReadToEnd();
List<string>[] words =new List<string>[6];
string[] split = str.Split('<');
for (int i = 0; i < 6; i++)
{
words[i] = new List<string>();
string[] temp = split[i].Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
foreach(string word in temp)
{
words[i].Add(word);
}
}

دقت کن که اولین عضو هر لیست نوع اون لیست هست یعنی مثلا شغله یا اسم و ... میتونی کلا اونو تو عملیات ها skip کنی ننویسی ...