برنامج لتحويل الارقام الى نصوص بلغة c#

ب

السلام عليكم

ساشارككم اليوم اكواد برنامج بسيط يقوم بتحويل 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];
}
}

}

عن الكاتب

أحمد مجدي

Full Stack Software Developer , Geek

أضف تعليقاً

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.