PDA

View Full Version : جابجايي كلمات



mfg1372
یک شنبه 07 دی 1393, 00:50 صبح
سلام دوستان . اميدوارم حالتون خوب باشه . ميخواستم از طريق يك تكست باكس يه متني بعنوان مثال ( علي بهمن فرشيد ) رو وارد كنم و وقتي دكمه رو زدم كلمات جاشون بصورت رندوم عوض شه مثلا بشه ( فرشيد علي بهمن ) يا ( بهمن علي فرشيد ) و تو يه تكست باكس ديگه بندازه . ممنون ميشم راهنماييم كنين . ***تشكر

vbhamed
یک شنبه 07 دی 1393, 01:17 صبح
سلام
با كمك تابع Split كلمات رو بر اساس كاراكتر فاصله از هم جدا و در يك آرايه قرار بدين بعد به كمك تابع RND براي توليد اعداد تصادفي، ترتيب اونها رو عوض كنيد و در نهايت با هم تركيب كنيد

mfg1372
یک شنبه 07 دی 1393, 14:49 عصر
خيلي ممنونتون ميشم اگه كدش رو برام قرار بديد.

vbhamed
دوشنبه 08 دی 1393, 14:48 عصر
سلام
اين تالار فقط براي راهنمايي است و نوشتن كد با خوتونه دوست عزيز

mfg1372
پنج شنبه 11 دی 1393, 13:45 عصر
تونستم تا اينجاي كد رو بنويسم و براي متن هاي كم كار ميكنه ولي براي براي متنهاي طولاني هنگ ميكنه.

Dim s() As String

s = Split(Text1.Text, " ")

Const n = 3
Dim a(0 To n) As Integer
a(1) = CInt(Int((n * Rnd()) + 1))
For i = 2 To n
a(i) = CInt(Int((n * Rnd()) + 1))
For j = 1 To i - 1
If (a(i) = a(j)) Then
a(i) = CInt(Int((6 * Rnd()) + 1))
j = 1
i = i - 1
End If
Next j
Next i

Text2.Text = ""
For i = 0 To 3
Text2.Text = Text2.Text + " " + s((a(i)))
Next i

vbhamed
شنبه 13 دی 1393, 11:46 صبح
سلام
Dim s() As String, x$, i%, i1%, i2%, n&

s = Split(Text1, " ")
n = UBound(s)

Randomize Timer

For i = 0 To UBound(s)
i1 = Int(Rnd * (n + 1))
i2 = Int(Rnd * (n + 1))
x = s(i1)
s(i1) = s(i2)
s(i2) = x
Next

x = ""
For i = 0 To n
x = x & Replace(s(i), vbCrLf, "") & " "
Next
Text2 = x

mfg1372
دوشنبه 15 دی 1393, 18:23 عصر
واقعا ممنونم از برنامه زیبا و سایت عالیتون ...فقط اینکه محتویات تکست باکس دوم رو زمانی که میخام کپی کنم به این صورت میشه : ãÓځ ÎØæØ åíÓÕ ÌÇŽí .

mfg1372
دوشنبه 15 دی 1393, 19:03 عصر
[ حل شد ] برای درست کردنش کافیه تکست رو به Rich text انتقال دهید . ***بازم ممنون

vbhamed
سه شنبه 16 دی 1393, 06:19 صبح
سلام
موقع كپي و Paste كردن كيبردتون در حالت تايپ فارسي باشه