PDA

View Full Version : sort کردن array



SaidJan
پنج شنبه 11 اردیبهشت 1393, 18:31 عصر
سلام
میخوام داخل visual basic چندتا کلمه داخل یک RichTexbtBox رو Sort کنم(هرکلمه در یک خط هست) و توی مسج باکس نشون بدم. خودم این رو نوشتم ولی میدونم یه جاییش اشتباهه و کار نمیکنه.
طرز قرار دادن textBox رو توی array هم انجام دادم. راه ساده تر چی هست؟

ممنون میشم کمک کنید



Dim sll As List(Of String)

If CheckBox1.Checked Then
Clipboard.SetText(TextBox1.Text)
RichTextBox1.AppendText(Clipboard.GetText() + vbNewLine)
Dim i, temp As Integer
Dim pss As Integer
Dim exx As Boolean
sll.Add(TextBox1.Text)
pss = 1
exx = True
sll.Sort()

While (pss < sll.Count And exx = True)
exx = False

For i = 0 To sll.Count - pss
If sll[i] > sll[i+1] Then
temp = sll.
sll[i]=sll[i+a]
sll[i+1]=temp

exx = True
pss = pss + 1
End If

Next

End While

Hossis
پنج شنبه 11 اردیبهشت 1393, 19:49 عصر
کلمات رو داخل یک لیست باکس بریز (که این لیست باکس می تونه مخفی باشه) بعد از خاصیت Sorted استفاده کن

Dim ls As ListBox
ls.Sorted = True

SaidJan
سه شنبه 16 اردیبهشت 1393, 19:29 عصر
کلمات رو داخل یک لیست باکس بریز (که این لیست باکس می تونه مخفی باشه) بعد از خاصیت Sorted استفاده کن

Dim ls As ListBox
ls.Sorted = True

مشکل اینه که باید فقط با یک تابع یا Function این کار رو انجام بدم
تغییرش دادم به کد زیر
یه کم بهتر شده ولی هنوز کار نمیکنه


Dim i As Integer
Dim temp As String
Dim pas As Integer = 1
Dim exx As Boolean

While (1 < 100 And exx = True)
exx = False
For i = 0 To 100 Step 1
If (RichTextBox1.Lines(i) > RichTextBox1.Lines(i + 1)) Then
temp = RichTextBox1.Lines(i)
RichTextBox1.Lines(i) = RichTextBox1.Lines(i + 1)
RichTextBox1.Lines(i + 1) = temp
exx = True
pas = pas + 1
End If

Next
End While

SaidJan
پنج شنبه 18 اردیبهشت 1393, 18:29 عصر
ممنون میشم کمک کنید :ناراحت:

majidnazari65
پنج شنبه 18 اردیبهشت 1393, 21:23 عصر
دوست عزیز RichTextBox.Lines(i) ها رو نمیتونی تغییر بدی، مگر اینکه یک آرایه به RichTextBox.Lines نسبت بدی.
ساده ترین راه، استفاده از Array.Sort به صورت زیره:

Dim strLines() As String = RichTextBox1.Lines()
Array.Sort(Of String)(strLines)
RichTextBox1.Lines = strLines

اگر حتما برای مرتب سازی باید از کدهایی استفاده کنی که خودت نوشتی، یک الگوریتم مرتب سازی رو انتخاب کن و بر اساس اون آرایه strLines رو مرتب کن.

SaidJan
سه شنبه 23 اردیبهشت 1393, 07:56 صبح
دوست عزیز RichTextBox.Lines(i) ها رو نمیتونی تغییر بدی، مگر اینکه یک آرایه به RichTextBox.Lines نسبت بدی.
ساده ترین راه، استفاده از Array.Sort به صورت زیره:

Dim strLines() As String = RichTextBox1.Lines()
Array.Sort(Of String)(strLines)
RichTextBox1.Lines = strLines

اگر حتما برای مرتب سازی باید از کدهایی استفاده کنی که خودت نوشتی، یک الگوریتم مرتب سازی رو انتخاب کن و بر اساس اون آرایه strLines رو مرتب کن.

سپاس
ولی اینجوری نمیخوام.
میخوام خودم Function بنویسم همونطور که در پست های قبلی گفتم. RichTextBox رو تبدیل کردم به Listbox

SaidJan
پنج شنبه 25 اردیبهشت 1393, 17:02 عصر
لطفا یکی کمک کنه. واسه یک ساعت دیگه میخوامش :ناراحت: