PDA

View Full Version : جلوگیری از ذخیره حروف تکراری در آرایه لیست



kianezhad
جمعه 20 بهمن 1391, 15:18 عصر
سلام به همه دوستان عزیز و اساتید گرامی
تو این کد زیر میخوام از قرار گرفتن حروف تکراری درون لیست جلوگیری کنم ولی این کد کار نمیکنه
لطفا راهنمایی کنید


using System;
using System.Collections.Generic;
using System.Text;

namespace MaleziaProject
{
class Node1
{

public List<string> Nodelen1 = new List<string>();
public List<string> Neighbor1 = new List<string>();
Int32 pow;
Int32 sqrt;
public int insert(Int32 p1, Int32 p2, string ch, Int32 coordinate1, Int32 coodinate2)
{
if (check(ch) == true)
{
pow = Convert.ToInt32(Math.Pow(p1 - coordinate1, 2) + Math.Pow(p2 - coodinate2, 2));
sqrt = Convert.ToInt32(Math.Sqrt(pow));

if ((sqrt <= 100) && (sqrt != 0))
{

Nodelen1.Add(ch);
Nodelen1.Add(sqrt.ToString());
Neighbor1.Add(ch);
Neighbor1.Add(coordinate1.ToString());
Neighbor1.Add(coodinate2.ToString());
}
}

return 0;
}
private bool check(string str)
{
for (int i = 0; i < Neighbor1.Count; i++)
{
if (i % 3 == 0)
{
if (str==Neighbor1[i])
return false;
}
}
return true;
}
}
}

دقت کنین آرگومان ها رو درون مین توسط یه حلقه برای این متد ارسال میشن مثه کد زیر


for (int i = 0; i < 62; i++)
{
if (i % 3 == 0)
{
str = Graph[i];
with = Int32.Parse(Graph[i + 1]);
height = Int32.Parse(Graph[i + 2]);

node1.insert(pic1[0], pic1[1], str, with, height);
لطفا راهنمایی کنین خیلی فوریه

aradrobo
جمعه 20 بهمن 1391, 18:26 عصر
منظورت از لیست چیه ؟

plus
جمعه 20 بهمن 1391, 19:01 عصر
راستش من درست از کدتون سر در نیاوردم ولی میتونین قبل از درج، با استفاده از متد Contains بررسی کنید ببینید لیست شما مقدار رو داره یا نه:

List<int> list = new List<int>();
..
..
if (!list.Contains(10))
list.Insert(0, 10);

و یا اینکه، وقتی شما لیستی دارین که آیتم های تکراری توش هست میتونین با استفاده از متد Distinct، آیتمهای غیر تکراری رو بدست بیارین.

kianezhad
جمعه 20 بهمن 1391, 21:56 عصر
راستش من درست از کدتون سر در نیاوردم ولی میتونین قبل از درج، با استفاده از متد Contains بررسی کنید ببینید لیست شما مقدار رو داره یا نه:

List<int> list = new List<int>();
..
..
if (!list.Contains(10))
list.Insert(0, 10);

و یا اینکه، وقتی شما لیستی دارین که آیتم های تکراری توش هست میتونین با استفاده از متد Distinct، آیتمهای غیر تکراری رو بدست بیارین.
منظورم این بود که مثلا حرف A رو که بخوایم قرار بدیم تو لیست اول چک کنه ببینه اگه A تو لیست نیست اونو قرار بده و الا بره حروف بعدی رو چک کنه

Spresso
جمعه 20 بهمن 1391, 22:11 عصر
توی ساختمان داده از BST برای حذف داده های تکراری درلیست استفاده میشه...

kianezhad
جمعه 20 بهمن 1391, 22:21 عصر
نه ببینین من میخوام قبل اینکه تو لیست قرار بگیره اول چک کنه تو لیست نبود توش قرار بده

plus
جمعه 20 بهمن 1391, 22:36 عصر
نه ببینین من میخوام قبل اینکه تو لیست قرار بگیره اول چک کنه تو لیست نبود توش قرار بده
من دقیقا راه حل همون موضوع رو گفتم تو پست 3.نمیدونم دیگه.

kianezhad
شنبه 21 بهمن 1391, 00:30 صبح
من دقیقا راه حل همون موضوع رو گفتم تو پست 3.نمیدونم دیگه.
دوستای عزیزم ببینین فرض کنین میخواین چنتا حرف رو تو آرایه طوری قرار بدین که تکراری توش قرار نگیره
برای این یه کد میخوام چون کدی که من نوشتم باید درست کار کنه ولی یه جاش اشکال داره چون رو اینتیجر درست کار میکنه ولی رو رشته کار نمیکنه

Mahmoud.Afrad
شنبه 21 بهمن 1391, 01:15 صبح
جواب شما که داده شد. باید با متد contains چک کنی اگر قبلا در لیست نبود اضافه کنی:

List<string> lst = new List<string>();
private void button3_Click(object sender, EventArgs e)
{
string str = "a";
if (!lst.Contains(str))
{
lst.Add(str);
}
}

str رشته ای هست که میخواهید به لیست اضافه کنید.