السلام عليكم
ساشارككم اليوم اكواد برنامج بسيط يقوم بتحويل 3 ارقام الى نصوص
فمثلاً عندما نقول بكتابة 159 يقوم بتحويلها الى One Hundred Fifty Nine
نقوم بعمل Function باي اسم تريد وتقوم بارجاع قيمة نصية “string”
وننشئ مصفوفتين احدهما للارقام من 1 الى 19 والاخرى للعشرات
ونقوم بالتحقق من الرقم المدخل اذا كان اقل من او يساوي 19 نرجع قيمته مباشرة من المصفوفة الاولى
اما اذا كان اكبر من 19 واقل من 100 نقسم الرقم الى جزئين آحاد وعشرات ونرجع قيمة الآحاد من المصفوفة الأولى والعشرات من المصفوفة الثانية
وفي حين ان الرقم اكبر من ويساوي 100
يقسم الى ثلاث اجزاء : مئات , عشرات و آحاد
نرجع المئات من المصفوفة الاولى + كلمة “Hundred” والجزئين الباقيين كما فعلنا في الحالة السابقة
static string fu(int number) { string final; // المتغير الذي سيقوم بارجاع النتيجة //انشاء مصفوفة نصية للاعداد من واحد الى تسعة عشر string[] num = { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" }; // انشاء مصفوفة للعشرات من اول عشرين string[] te = { "", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" }; if (number <= 19) // اذا كان الرقم اقل من 20 سنقوم باستدعاء قيمته مباشرة من المصفوفة الاولى final = num[number]; /* اذا كان الرقم اكبر من 19 واقل من 100 سيكون الحل على خطوتين اولاً سنقسم العدد على 10 ونستدعي قيمته من مصفوفة العشرات مثلا 22 Twenty حينما نقسم على 10 سيرجع لنا 2 وقيمتها في المصفوفة الثانية ثانياً : سنقوم باخذ الرقم الاول ونرجع قيمته من المصفوفة الاولى وبعد ذلك نجمع النصين سوياً ونعيدهم الى final */ else if (number > 19 && number < 100) { int a = number / 10; int b = number % 10; final = te[a] + " " + num[b]; } /* اذا لم يتحقق اي من الشروط السابقة فمن المفترض ان تكون 3 ارقام , سنقوم اول بالقسمة على 100 ونعيد الرقم الناتج للمصفوفة الاولى وبعدين ذلك بـ 100% سنقوم باخذ الرقمين المتبقين ونكرر مافعلناه في else if ومن ثم نجمع النواتج النصية سوياً */ else { int p = number / 100; int z = number % 100; int z1 = z / 10; int z2 = z % 10; final = num[p] + " Hundred " + te[z1] + " " + num[z2]; } return final; // ارجاع قيمة الناتج للدالة }
وبطريقة اخرى عن طريق استخدام substring
static string Ntt(int number) { string[] num = { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" }; string[] te = { "", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" }; string nn = number.ToString(); if(number<=19) return num[number]; else if(number>19 &&number <100) { string nn2 = nn.Substring(0, 1); string nn3 = nn.Substring(1, 1); int n2 = Convert.ToInt32(nn2); int n3 = Convert.ToInt32(nn3); return te[n2] + num[n3]; } else { string n1 = nn.Substring(0, 1); int nn1 = Convert.ToInt32(n1); string n2 = nn.Substring(1, 2); int nn2 = Convert.ToInt32(n2); if (nn2 <= 19) return num[nn1]+" Hundred " + num[nn2]; else { string n3 = n2.Substring(0, 1); int nn3 = Convert.ToInt32(n3); string n4 = n2.Substring(1, 1); int nn4 = Convert.ToInt32(n4); return num[nn1] + " hundred " + te[nn3] + " " + num[nn4]; } } }