PDA

View Full Version : تبدیل اعداد حروفی به رقمی و بلعکس



rezaei manesh
سه شنبه 03 اردیبهشت 1387, 08:58 صبح
سلام
من می تونم اعداد رو به حروف تبدیل کنم اما نمی تونم حروف رو به اعداد تبدیل کنم
برای مثلا هفتاد و پنج هزار رو چطور به 75000 تبدیل کنم؟

amirsajjadi
سه شنبه 03 اردیبهشت 1387, 15:07 عصر
با سلام
این برنامه رو خودم نوشتم اگه ایرادی داره بگو

PrivateFunction Stack_POP(ByVal stk As Stack(OfLong)) AsLong
Dim s AsLong = 0
For i AsByte = 0 To stk.ToArray.Length - 1
s += stk.Pop
Next
Return s
EndFunction
PrivateFunction Get_Num(ByVal num AsString) AsLong
Dim LIST_NUM AsNew Dictionary(OfString, Integer)
LIST_NUM.Add("صفر", 0) : LIST_NUM.Add("یک", 1) : LIST_NUM.Add("دو", 2)
LIST_NUM.Add("سه", 3) : LIST_NUM.Add("چهار", 4) : LIST_NUM.Add("پنج", 5)
LIST_NUM.Add("شش", 6) : LIST_NUM.Add("هفت", 7) : LIST_NUM.Add("هشت", 8)
LIST_NUM.Add("نه", 9) : LIST_NUM.Add("ده", 10) : LIST_NUM.Add("یازده", 11)
LIST_NUM.Add("دوازده", 12) : LIST_NUM.Add("سیزده", 13) : LIST_NUM.Add("چهارده", 14)
LIST_NUM.Add("پانزده", 15) : LIST_NUM.Add("شانزده", 16) : LIST_NUM.Add("هفده", 17)
LIST_NUM.Add("هجده", 18) : LIST_NUM.Add("نوزده", 19) : LIST_NUM.Add("بیست", 20)
LIST_NUM.Add("سی", 30) : LIST_NUM.Add("چهل", 40) : LIST_NUM.Add("پنجاه", 50)
LIST_NUM.Add("شصت", 60) : LIST_NUM.Add("هفتاد", 70) : LIST_NUM.Add("هشتاد", 80)
LIST_NUM.Add("نود", 90) : LIST_NUM.Add("صد", 100) : LIST_NUM.Add("دویست", 200)
LIST_NUM.Add("سیصد", 300) : LIST_NUM.Add("چهارصد", 400) : LIST_NUM.Add("پانصد", 500)
LIST_NUM.Add("ششصد", 600) : LIST_NUM.Add("هفتصد", 700) : LIST_NUM.Add("هشتصد", 800)
LIST_NUM.Add("نهصد", 900)
Dim array_str() AsString = Split(num, " ")
Dim stk1, stk2 AsNew Stack(OfLong)
For i AsInteger = LBound(array_str) To UBound(array_str)
If array_str(i) <> "و"Then
SelectCase array_str(i)
Case"میلیارد"
stk2.Push(Stack_POP(stk1) * 1000000000)
Case"میلیون"
stk2.Push(Stack_POP(stk1) * 1000000)
Case"هزار"
stk2.Push(Stack_POP(stk1) * 1000)
CaseElse
stk1.Push(LIST_NUM.Item(array_str(i)))
EndSelect
EndIf
Next
If stk1.ToArray.Length > 0 Then stk2.Push(Stack_POP(stk1))
Return Stack_POP(stk2)
EndFunction
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = Get_Num(TextBox1.Text)
EndSub

rezaei manesh
پنج شنبه 05 اردیبهشت 1387, 11:58 صبح
سلام
من با اجازتون یکمی تو کدتون دست بردم تا اونو با ورودی های من سازگار کنم و با تغییرات کوچیکی درش دادم مشکلم حل شد
با تشکر