View Full Version : سوال: تابع معكوس متن و جستجو
ravand
سه شنبه 06 دی 1390, 18:30 عصر
سلام
من دنبال دو تا تابع هستم .
برنامه اي ميخوام بنويسيم كه يك رشته اي رو بگيره و معكوس آن را چاپ كنه .
و برنامه ي ديگر اينكه يك رشته اي رو بگيره و اگه رشته ي دوم در رشته ي اول تكرار بشه اگر چند بار تكرار بشه نقطه ي شروعش رو بگه :
مثلاً
abcaja
برام چاپ كنه كه حرف a چند بار نوشته شده ؟ و در چه كاراكتري؟
اگه يه برنامه هم ميتونيد ممنون ميشم براش بنويسيد.
متشكرم.
vb6_man
سه شنبه 06 دی 1390, 18:46 عصر
Function StrReverse(ByVal MyStr As String) As String
Dim TmpStr As String
TmpStr = ""
For i = Len(MyStr) To 1 Step -1
TmpStr = TmpStr & Mid(MyStr, i, 1)
Next i
StrReverse = TmpStr
End Function
Veteran
سه شنبه 06 دی 1390, 18:46 عصر
معکوس
StrReverse("matn")
خود vb این تابع رو داره و نیاز به نوشتن تابع نیست
اینم برای جستجو
Public Function Search(matn1 As String, matn2 As String)
For a = 1 To Len(matn1)
s = Left(matn1, a)
If InStr(a, s, matn2) <> 0 Then
j = j + 1
End If
Next a
msgbox J
End Function
Call Search("sobhaan", "a")
ravand
سه شنبه 06 دی 1390, 18:54 عصر
Function StrReverse(ByVal MyStr As String) As String
Dim TmpStr As String
TmpStr = ""
For i = Len(MyStr) To 1 Step -1
TmpStr = TmpStr & Mid(MyStr, i, 1)
Next i
StrReverse = TmpStr
End Function
ببخشيد من خيلي مبتدي ام و تازه vb رو شروع كردم.
اين خط توي دابل كوتيشن چيه؟ چرا خاليه؟
TmpStr = ""
الان من اگه بخوام با يه تكست متني رو بهش وارد كنم بايد چيكار كنم؟
Veteran
سه شنبه 06 دی 1390, 19:03 عصر
اون خط
TmpStr = ""
فکر نکنم نیازی باشه که نیست
چون متغیر استرینگ به صورت دیفالت خالی هست
vb6_man
سه شنبه 06 دی 1390, 19:08 عصر
Function InStrCount(ByVal Start As Integer, ByVal MyStr As String, ByVal YurStr As String) As Integer
If InStr(Start, MyStr, YurStr, vbBinaryCompare) = 0 Then
InStrCount = 0
Else
InStrCount = InStrCount(InStr(Start, MyStr, YurStr, vbBinaryCompare) + 1, MyStr, YurStr) + 1
End If
End Function
باش!
شما نذار اون خط رو
در ضمن خودم می دونستم VB اون تابع رو داره
خواستم بهش یاد بدم
در مورد این کد یه توضیح می دی عزیزم؟ (Sobhanجان:بامزه:)
ravand
سه شنبه 06 دی 1390, 19:12 عصر
من الان كدهاي شما رو در ويژوال بيسيك 6 وارد ميكنم جواب نميده. مشكل من از كجاست؟ فقط كاراكتر معكوس رو تونستم تست كنم ولي جستجو رو نه.
متشكرم
Veteran
سه شنبه 06 دی 1390, 19:14 عصر
جناب vb6_man این
Function InStrCount(ByVal Start As Integer, ByVal MyStr As String, ByVal YurStr As String) As Integer
If InStr(Start, MyStr, YurStr, vbBinaryCompare) = 0 Then
InStrCount = 0
Else
InStrCount = InStrCount(InStr(Start, MyStr, YurStr, vbBinaryCompare) + 1, MyStr, YurStr) + 1
End If
End Function
خروجی رو کجا نشون میده ؟!
vb6_man
سه شنبه 06 دی 1390, 19:17 عصر
د همینه دیگه
وقتی می گم اینجا اونجا نیست تو می گی چرا
Msgbox InstrCount(1,Text1.text,"a")
وقتی یک Function می بینی یعنی
خروجی Return می شه عزیزم:قلب::بامزه:
Veteran
سه شنبه 06 دی 1390, 19:21 عصر
سورس............
vb6_man
سه شنبه 06 دی 1390, 19:31 عصر
مشکلاتی که برنامه Sobhan داره
1. اول از همه اگه بخوای به صورت Algorithm معمولی بنویسی ( غیر بازگشتی ) بهتره که از Sub به جای function استفاده کنی
2. اگه Text2 در Text1 وجود نداشته باشد پیام blank یا خالی نمایش داده میشه ( که باید 0 باشه چون صورت مسئله می گه چند بار تکرار شد؟ )
3. اصلا چرا MsgBox ؟ شاید طرف بخواد چاپ کنه ، یا اصلا بخواد با یه متغیر دیگه جمع کنه یا ... ( بهترین روش Return کردن اونه )
4. تمامی متغیر هایی که شما استفاده کردی از نوع Variante می باشند که اصلا مناسب نیست
5. خوانایی برنامه ( سورس ) بسیار پایین است
من برم فوتبال
باز تمرینم دیر شد
Veteran
سه شنبه 06 دی 1390, 19:40 عصر
:قهقهه:
اصل کار مهمه که انجام میشه
1-نیجه رو خواستم نمایش بدم که میده
2- 0 یعنی چیزی نبود خالی هم یعنی چیزی نبود
3-نگفت میخوام چیکار کنم گفت میخوام ببینم چندبار تکرار شده پس فرقی نداره
4-اگه مناسب نبود اصلا این متغیر رو نمیذاشتن پس یک کاربردی داره
5- چیزه ساده ای بود شما دنبال بهونه هستی
6-دوست عزیزمون هرچی بخواد از کمک دریغ نمیکنم فعلا واسش مهم بود که ببینه چندبار تکرار شده و مهم نیست چجوری نتیجه رو نشون بدیم
7- دنبال حاشیه نباش زیاد کردن پست به درد نمیخوره که همش پست الکی میدی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.