PDA

View Full Version : پیمایش در آرایه های دو بعدی



mahdi.manian
چهارشنبه 27 آذر 1392, 21:48 عصر
با سلام.

می خواستم بپرسم به صورت Fade in چطوری میشه در آرایه دو بعدی حرکت کرد؟

آرایه ای دو بعدی من دارم که مثلا توسط کد زیر به صورت مارپیچ در آن پیمایش می کنم:

Dim T As Integer
For i = 1 To M
If i Mod 2 = 1 Then
For j = 1 To N
T = T + 1
A(i, j) = T
Next
Else
For j = N To 1 Step -1
T = T + 1
A(i, j) = T
Next
End If
Next


خروجی:


1 2 3 4 5
10 9 8 7 6
11 12 13 14 15


حالا من می خوام کد دیگه ای بنویسم که به صورت زیر پیمایش کنه:


1 2 3 4 5
12 13 14 15 6
11 10 9 8 7


حالا این مدل جدید اگه اشتباه نکنم اسمش میشه Fade in. ممنون میشم راهنمایی کنید که حلقه for را براش چطوری بنویسم.

یک مدل دیگه هم غیر از این می خوام پیاده کنم خیلی سخت هست به نظرم اسمش هم نفهمیدم چیه! این مدل به صورت زیر است:


1 2 4 7 10
3 5 8 11 13
6 9 12 14 15


اگه توجه کنید یک حالت خطی مورب داره که نمی دونم حلقه اش را چطوری بنویسم. فقط فکر نکنید این مدل ها را به هم ریخته و اشتباه نوشتم! فقط شما باید آنها را به ترتیب اعداد بخوانید. از 1 تا 15.


ممنون میشم راهنمایی کنید این دو مدل را چطوری پیاده کنم.


با تشکر.

mahdi.manian
جمعه 29 آذر 1392, 22:17 عصر
دوستان کسی نبود؟ ممنون میشم کمک کنید خیلی واسم مهمه ....

vbhamed
شنبه 30 آذر 1392, 07:33 صبح
سلام
آرايه اوليه تون رو هم بزاريد

mahdi.manian
شنبه 30 آذر 1392, 22:29 عصر
برنامه کامل را واستون پیام خصوصی کردم.

در این مثالی که زدم، M مقدارش 3 و N ، نیز 5 می باشد. بعد ارایه A با مقدار های i و j در همان حلقه for پرینت میشه. A(I, j)

mahdi.manian
چهارشنبه 04 دی 1392, 00:11 صبح
با عرض پوزش ولی تا کی باید صبر کنم؟ یک هفته پیش تاپیک را زدم ممنون میشم بررسی کنید.

meys34
پنج شنبه 05 دی 1392, 16:36 عصر
Option Explicit

Private Sub Command1_Click()
Dim M As Integer
Dim N As Integer

M = 15
N = 3

ReDim A(M, N) As Integer

Dim Counter As Integer
Dim i As Integer, j As Integer
Dim x As Integer

j = 1
Do
For i = x + 1 To M - x
Counter = Counter + 1
A(i, j) = Counter
Next

i = i - 1
If M * N <= Counter Then Exit Do

For j = x + 2 To N - x
Counter = Counter + 1
A(i, j) = Counter
Next

j = j - 1
If M * N <= Counter Then Exit Do

For i = M - x - 1 To x + 1 Step -1
Counter = Counter + 1
A(i, j) = Counter
Next

i = i + 1
If M * N <= Counter Then Exit Do

For j = N - x - 1 To x + 2 Step -1
Counter = Counter + 1
A(i, j) = Counter
Next

If M * N <= Counter Then Exit Do

j = j + 1

x = x + 1
Loop


Dim t As String

For j = 1 To N
t = ""
For i = 1 To M
t = t & vbTab & A(i, j)
Next
Print t
Next
End Sub

mahdi.manian
پنج شنبه 05 دی 1392, 17:20 عصر
فوق العاده ممنونم. واقعا لطف کردید.

فقط مدل دوم را هم میشه یک راهنمایی بکنید؟


1 2 4 7 10
3 5 8 11 13
6 9 12 14 15


ممنون.