<PRE class="brush: csharp; auto-links: true; collapse: true; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">/*
* by:stefanie
* date:2009-12-04
*/
namespace ConsoleApplication1
{
using System;
using System.Collections.Generic;
using System.Text;
class Program
{
private static Dictionary<int, string> dicUnit;
private static Dictionary<int, string> dicPlace;
static string Splite_Place = " {0} ";
static string Splite_Hundreds_Tens = " and ";
static string Splite_Tens_Unit = "-";
static string Splite_Point = "point";
//template
static string Unit_Tens_Place = "{0}";//20,30,40...90
static string Hundreds_Place = "{0} hundred";
static void Main(string[] args)
{
initDic();
string result = "";
Console.WriteLine("Please input a Number:");
string input = Console.ReadLine();
int pointIndex =input.IndexOf('.');
string integer = input;
string dec ="";
if(pointIndex != -1 )
{
integer = input.Substring(0, pointIndex);
dec = input.Substring(pointIndex + 1);
}
int len = integer.Length;
if (len > 15)
{
Console.WriteLine("Input number is too long");
return;
}
int index = (len - 1) / 3;
int bwNum, swNum, gwNum;
string str;
for (int i = 0; i <= index; i++)
{
str = integer.Substring(i*3);
if (str.Length > 3)
{
str = integer.Substring(i * 3, 3);
}
if (str.Length == 3)
{
bwNum = int.Parse(str.Substring(0, 1));
swNum = int.Parse(str.Substring(1, 1));
gwNum = int.Parse(str.Substring(2, 1));
result += GetStr(bwNum, swNum, gwNum);
}
else if (len == 2)
{
swNum = int.Parse(str.Substring(0, 1));
gwNum = int.Parse(str.Substring(1, 1));
result += GetStr(swNum, gwNum);
}
else if (len == 1)
{
gwNum = int.Parse(str.Substring(0, 1));
if (gwNum != 0)
{
result += GetStr(gwNum);
}
}
if ((index - i) != 0)
{
result += string.Format(Splite_Place, dicPlace[index - i]);
}
}
if (pointIndex != -1)
{
if (result != "")
{
result += " ";
}
result += Splite_Point;
for (int i = 0; i < dec.Length; i++)
{
result += " " + GetStr(int.Parse(dec.Substring(i, 1)));
}
}
result += " dollar";
Console.WriteLine(result);
Console.Read();
}
private static string GetStr(int gwNum)
{
return string.Format(Unit_Tens_Place, dicUnit[gwNum]);
}
private static string GetStr(int swNum, int gwNum)
{
string r = "";
if (swNum > 1)
{
r += Splite_Hundreds_Tens + string.Format(Unit_Tens_Place, dicUnit[swNum * 10]);
if (gwNum != 0)
{
r += Splite_Tens_Unit + string.Format(Unit_Tens_Place, dicUnit[gwNum]);
}
}
else if (swNum > 0 && swNum <= 1)
{
r = Splite_Hundreds_Tens + string.Format(Unit_Tens_Place, dicUnit[swNum * 10 + gwNum]);
}
else if (swNum == 0 && gwNum > 0)
{
r += Splite_Hundreds_Tens + GetStr(gwNum);
}
return r;
}
private static string GetStr(int bwNum, int swNum, int gwNum)
{
string r = "";
if (bwNum > 0)
{
r = string.Format(Hundreds_Place, dicUnit[bwNum]);
}
return r += GetStr(swNum, gwNum);
}
private static void initDic()
{
dicUnit = new Dictionary<int, string>();
dicUnit.Add(0, "zero");
dicUnit.Add(1, "one");
dicUnit.Add(2, "two");
dicUnit.Add(3, "three");
dicUnit.Add(4, "four");
dicUnit.Add(5, "five");
dicUnit.Add(6, "six");
dicUnit.Add(7, "seven");
dicUnit.Add(8, "eight");
dicUnit.Add(9, "nine");
dicUnit.Add(10, "ten");
dicUnit.Add(11, "eleven");
dicUnit.Add(12, "twelve");
dicUnit.Add(13, "thirteen");
dicUnit.Add(14, "fourteen");
dicUnit.Add(15, "fifteen
/*
* by:stefanie
* date:2009-12-04
*/
namespace ConsoleApplication1
{
using System;
using System.Collections.Generic;
using System.Text;
class Program
{
private static Dictionary<int, string> dicUnit;
private static Dictionary<int, string> dicPlace;
static string Splite_Place = " {0} ";
static string Splite_Hundreds_Tens = " and ";
static string Splite_Tens_Unit = "-";
static string Splite_Point = "point";
//template
static string Unit_Tens_Place = "{0}";//20,30,40...90
static string Hundreds_Place = "{0} hundred";
static void Main(string[] args)
{
initDic();
string result = "";
Console.WriteLine("Please input a Number:");
string input = Console.ReadLine();
int pointIndex =input.IndexOf('.');
string integer = input;
string dec ="";
if(pointIndex != -1 )
{
integer = input.Substring(0, pointIndex);
dec = input.Substring(pointIndex + 1);
}
int len = integer.Length;
if (len > 15)
{
Console.WriteLine("Input number is too long");
return;
}
int index = (len - 1) / 3;
int bwNum, swNum, gwNum;
string str;
for (int i = 0; i <= index; i++)
{
str = integer.Substring(i*3);
if (str.Length > 3)
{
str = integer.Substring(i * 3, 3);
}
if (str.Length == 3)
{
bwNum = int.Parse(str.Substring(0, 1));
swNum = int.Parse(str.Substring(1, 1));
gwNum = int.Parse(str.Substring(2, 1));
result += GetStr(bwNum, swNum, gwNum);
}
else if (len == 2)
{
swNum = int.Parse(str.Substring(0, 1));
gwNum = int.Parse(str.Substring(1, 1));
result += GetStr(swNum, gwNum);
}
else if (len == 1)
{
gwNum = int.Parse(str.Substring(0, 1));
if (gwNum != 0)
{
result += GetStr(gwNum);
}
}
if ((index - i) != 0)
{
result += string.Format(Splite_Place, dicPlace[index - i]);
}
}
if (pointIndex != -1)
{
if (result != "")
{
result += " ";
}
result += Splite_Point;
for (int i = 0; i < dec.Length; i++)
{
result += " " + GetStr(int.Parse(dec.Substring(i, 1)));
}
}
result += " dollar";
Console.WriteLine(result);
Console.Read();
}
private static string GetStr(int gwNum)
{
return string.Format(Unit_Tens_Place, dicUnit[gwNum]);
}
private static string GetStr(int swNum, int gwNum)
{
string r = "";
if (swNum > 1)
{
r += Splite_Hundreds_Tens + string.Format(Unit_Tens_Place, dicUnit[swNum * 10]);
if (gwNum != 0)
{
r += Splite_Tens_Unit + string.Format(Unit_Tens_Place, dicUnit[gwNum]);
}
}
else if (swNum > 0 && swNum <= 1)
{
r = Splite_Hundreds_Tens + string.Format(Unit_Tens_Place, dicUnit[swNum * 10 + gwNum]);
}
else if (swNum == 0 && gwNum > 0)
{
r += Splite_Hundreds_Tens + GetStr(gwNum);
}
return r;
}
private static string GetStr(int bwNum, int swNum, int gwNum)
{
string r = "";
if (bwNum > 0)
{
r = string.Format(Hundreds_Place, dicUnit[bwNum]);
}
return r += GetStr(swNum, gwNum);
}
private static void initDic()
{
dicUnit = new Dictionary<int, string>();
dicUnit.Add(0, "zero");
dicUnit.Add(1, "one");
dicUnit.Add(2, "two");
dicUnit.Add(3, "three");
dicUnit.Add(4, "four");
dicUnit.Add(5, "five");
dicUnit.Add(6, "six");
dicUnit.Add(7, "seven");
dicUnit.Add(8, "eight");
dicUnit.Add(9, "nine");
dicUnit.Add(10, "ten");
dicUnit.Add(11, "eleven");
dicUnit.Add(12, "twelve");
dicUnit.Add(13, "thirteen");
dicUnit.Add(14, "fourteen");
dicUnit.Add(15, "fifteen");
dicUnit.Add(16, "sixteen");
dicUnit.Add(17, "seventeen");
dicUnit.Add(18, "eighteen");
dicUnit.Add(19, "nineteen");
dicUnit.Add(20, "twenty");
dicUnit.Add(30, "thirty");
dicUnit.Add(40, "forty");
dicUnit.Add(50, "fifteen");
dicUnit.Add(60, "sixteen");
dicUnit.Add(70, "seventeen");
dicUnit.Add(80, "eighteen");
dicUnit.Add(90, "nineteen");
dicPlace = new Dictionary<int,string>();
dicPlace.Add(0, "");
dicPlace.Add(1, "thousand");
dicPlace.Add(2, "million");
dicPlace.Add(3, "billion");
dicPlace.Add(4, "trillion");
}
}
}
");
dicUnit.Add(16, "sixteen");
dicUnit.Add(17, "seventeen");
dicUnit.Add(18, "eighteen");
dicUnit.Add(19, "nineteen");
dicUnit.Add(20, "twenty");
dicUnit.Add(30, "thirty");
dicUnit.Add(40, "forty");
dicUnit.Add(50, "fifteen");
dicUnit.Add(60, "sixteen");
dicUnit.Add(70, "seventeen");
dicUnit.Add(80, "eighteen");
dicUnit.Add(90, "nineteen");
dicPlace = new Dictionary<int,string>();
dicPlace.Add(0, "");
dicPlace.Add(1, "thousand");
dicPlace.Add(2, "million");
dicPlace.Add(3, "billion");
dicPlace.Add(4, "trillion");
}
}
}</PRE>