PDA

View Full Version : سوال: چگونه عناصر داخل آرایه ها رو از بزرگ به کوچک مرتب کنیم؟



mtn677
یک شنبه 13 مرداد 1392, 18:23 عصر
سلام
من یک آرایه با 10 اندیس دارم.برای هر اندیس یک عدد به دلخواه تعریف میکنم.حالا می خوام اعداد داخل آرایه از بزرگ به کوچک پرینت بشن.
من از این روش استفاده کردم که جواب میده ولی اگه در بین عناصر آرایه عدد تکراری وجود داشته باشه مشکل پیش میاد اگه کسی میتونه کمک کنه:
Option Explicit

Dim i As Integer
Dim ii As Integer
Dim c As Integer
Dim a(10) As Integer
Dim b(10) As Integer

Private Sub Command_Click()

a(1) = 4
a(2) = 7
a(3) = 12
a(4) = 5
a(5) = 66
a(6) = 55
a(7) = 2
a(8) = 0
a(9) = 25
a(10) = 6

For i = 1 To 10
For ii = 1 To 10

If a(i) < a(ii) Then

c = c + 1

End If

Next ii

b(c) = a(i)
c = 1
Next i

For i = 1 To 10
Print b(i)
Next i

End Sub

Private Sub Form_Load()

c = 1

End Sub

SlowCode
یک شنبه 13 مرداد 1392, 19:15 عصر
تعداد متغیرهات خیلی زیاد هستن! من اینطوری نوشتمش:

Dim a(10) As Integer

Private Sub Command1_Click()
For i = 1 To 10
a(i) = Fix(Rnd * 50)
Next

Sort a

For i = 1 To UBound(a)
Print a(i)
Next
End Sub

Private Sub Sort(ByRef Arr As Variant)
For i = 1 To UBound(Arr)
For j = 1 To i
If Arr(i) >= Arr(j) Then
temp = Arr(j)
Arr(j) = Arr(i)
Arr(i) = temp
End If
Next
Next

Set temp = Nothing
End Sub

مقادیر آرایه رو داخل یه حلقه به صورت تصادفی تنظیم کردم، یه تابع Sort نوشتم که آرایه رو میگیره و سورتش میکنه.

mtn677
یک شنبه 13 مرداد 1392, 20:51 عصر
سلام

من نتونستم استفاده کنم آخرش خطا میده:

Set temp = Nothing

SlowCode
یک شنبه 13 مرداد 1392, 21:02 عصر
احتمالا یه کاری کردی که خطا میده، چون واسه من درست کار میکنه.

فعلا اون خط رو پاک کن و تستش کن.

mtn677
یک شنبه 13 مرداد 1392, 21:21 عصر
آره اون خطو پاک کردم جواب داد مرسی

من فقط سه متغیر i ,j,temp از نوع integer بهش اضافه کردم کار دیگه انجام ندادم