किसी संख्या के प्रत्येक अंक (डिजिट) को उसके अंग्रेजी शब्द प्रतिनिधित्व में बदलने के लिए हम सरणी/शब्दकोश का उपयोग करते हैं।
उदाहरण
using System;
using System.Collections.Generic;
using System.Text;
namespace Demo {
class MyApplication {
static void Main(string[] args) {
int val = 4677;
int next, num_digits = 0;
int[] a = new int[10];
// 0-9 के लिए शब्द
string[] digits_words = {
"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"
};
Console.WriteLine("Number: " + val);
Console.Write("Number (words): ");
// अंकों को निकालें (उल्टे क्रम में)
do {
next = val % 10;
a[num_digits] = next;
num_digits++;
val = val / 10;
} while (val > 0);
// सही क्रम में प्रिंट करें
num_digits--;
for (; num_digits >= 0; num_digits--) {
Console.Write(digits_words[a[num_digits]] + " ");
}
Console.ReadLine();
}
}
}
आउटपुट
Number: 4677 Number (words): four six seven seven
बेहतर दृष्टिकोण: स्ट्रिंग रूपांतरण
string number = "4677";
string[] words = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
string result = string.Join(" ", number.Select(c => words[c - '0']));
Console.WriteLine(result); // four six seven seven
पूर्ण संख्या को शब्दों में (भारतीय/पश्चिमी प्रणाली)
यदि पूरी संख्या को शब्दों में चाहिए (जैसे "four thousand six hundred seventy-seven"):
// इसके लिए अधिक जटिल एल्गोरिदम या लाइब्रेरी (Humanizer) की आवश्यकता होती है // Humanizer लाइब्रेरी: using Humanizer; Console.WriteLine(4677.ToWords()); // "four thousand six hundred and seventy-seven"
मुख्य बिंदु
- मूल दृष्टिकोण प्रत्येक अंक को अलग-अलग शब्द में बदलता है (डिजिट-बाय-डिजिट)।
- पूर्ण संख्या शब्द रूपांतरण के लिए प्लेस वैल्यू (हजार, लाख, करोड़/मिलियन) हैंडलिंग चाहिए।
- नकारात्मक संख्याओं के लिए "minus" प्रीफिक्स जोड़ें।
- दशमलव संख्याओं के लिए "point" और फिर प्रत्येक अंक।
विस्तारित: दशमलव संख्या के लिए
public static string DigitsToWords(double number) {
string[] words = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
string str = number.ToString();
var result = new List();
foreach (char c in str) {
if (c == '.') result.Add("point");
else if (c == '-') result.Add("minus");
else if (char.IsDigit(c)) result.Add(words[c - '0']);
}
return string.Join(" ", result);
}
// DigitsToWords(-46.77) → "minus four six point seven seven"