using System;
namespace ahoNerd
{
internal class Program
{
static void Main(string[] args)
{
Terbilang terbilang = new Terbilang();
// Console.WriteLine(terbilang[-31]);
// Console.WriteLine(terbilang[-1987]);
// Console.WriteLine(terbilang[2]);
// Console.WriteLine(terbilang[0]);
// Console.WriteLine(terbilang[08]);
// Console.WriteLine(terbilang[1]);
// Console.WriteLine(terbilang[11]);
// Console.WriteLine(terbilang[12]);
// Console.WriteLine(terbilang[17]);
// Console.WriteLine(terbilang[20]);
// Console.WriteLine(terbilang[30]);
// Console.WriteLine(terbilang[21]);
// Console.WriteLine(terbilang[99]);
// Console.WriteLine(terbilang[101]);
// Console.WriteLine(terbilang[192]);
// Console.WriteLine(terbilang[202]);
// Console.WriteLine(terbilang[547]);
// Console.WriteLine(terbilang[976]);
// Console.WriteLine(terbilang[1894]);
// Console.WriteLine(terbilang[2111]);
// Console.WriteLine(terbilang[2120]);
// Console.WriteLine(terbilang[9876]);
// Console.WriteLine(terbilang[10000]);
// Console.WriteLine(terbilang[-10000]);
// Console.WriteLine(terbilang[11111]);
// Console.WriteLine(terbilang[99999]);
// Console.WriteLine(terbilang[999920]);
// Console.WriteLine(terbilang[111111]);
// Console.WriteLine(terbilang[9999920]);
// Console.WriteLine(terbilang[1111111]);
// Console.WriteLine(terbilang[99999920]);
// Console.WriteLine(terbilang[11111111]);
// Console.WriteLine(terbilang[212121212]);
// Console.WriteLine(terbilang[919191919]);
// Console.WriteLine(terbilang[9911991199]);
// Console.WriteLine(terbilang[1199119911]);
// Console.WriteLine(terbilang[19911991199]);
// Console.WriteLine(terbilang[11991199119]);
// Console.WriteLine(terbilang[119911991199]);
// Console.WriteLine(terbilang[911991199119]);
// Console.WriteLine(terbilang[9911991199119]);
// Console.WriteLine(terbilang[1199119911991]);
Console.WriteLine(terbilang[99119911991199]);
Console.WriteLine(terbilang[11991199119911]);
Console.WriteLine(terbilang[991199119911991]);
Console.WriteLine(terbilang[119911991199119]);
Console.WriteLine(terbilang[9911991199119911]);
Console.WriteLine(terbilang[1199119911991199]);
Console.WriteLine(terbilang[99119911991199119]);
Console.WriteLine(terbilang[11991199119911991]);
Console.WriteLine("\nTekan tombol apapun untuk keluar program");
Console.ReadKey();
}
}
}
using System;
namespace ahoNerd
{
class Terbilang
{
readonly string[] data = { "", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas" };
private bool minus = false;
public string this[long angka] => CariIndexAngka(angka);
private string CariIndexAngka(long angka)
{
string nilaiReturn;
if (angka < 0)
{
minus = true;
long abs = Math.Abs(angka);
string coba = CariIndexAngka(abs);
nilaiReturn = coba == string.Empty ? $"-{CariIndexAngka(abs)}" : $"minus {coba}";
}
else if (angka == 0)
{
nilaiReturn = "nol";
}
else if (angka < 12)
{
nilaiReturn = data[angka];
}
else if (angka < 20)
{
nilaiReturn = data[angka - 10] + " belas";
}
else if (angka < 100)
{
nilaiReturn = Olah(angka, 10, "puluh");
}
else if (angka < 200)
{
nilaiReturn = "seratus " + CariIndexAngka(angka - 100);
}
// ~ 999
else if (angka < 1000)
{
nilaiReturn = Olah(angka, 100, "ratus");
}
// ~ 1,999
else if (angka < 2000)
{
nilaiReturn = "seribu " + CariIndexAngka(angka - 1000);
}
// ~ 9,999
else if (angka < 10000)
{
nilaiReturn = Olah(angka, 1000, "ribu");
}
// ~ 99,999
else if (angka < 100000)
{
nilaiReturn = Olah(angka, 1000, "ribu", 2);
}
// ~ 999,999
else if (angka < 1000000)
{
nilaiReturn = Olah(angka, 1000, "ribu", 3);
}
// ~ 9,999,999
else if (angka < 10000000)
{
nilaiReturn = Olah(angka, 1000000, "juta");
}
// ~ 99,999,999
else if (angka < 100000000)
{
nilaiReturn = Olah(angka, 1000000, "juta", 2);
}
// ~ 999,999,999
else if (angka < 1000000000)
{
nilaiReturn = Olah(angka, 1000000, "juta", 3);
}
// ~ 9,999,999,999
else if (angka < 10000000000)
{
nilaiReturn = Olah(angka, 1000000000, "milyar");
}
// ~ 99,999,999,999
else if (angka < 100000000000)
{
nilaiReturn = Olah(angka, 1000000000, "milyar", 2);
}
// ~ 999,999,999,999
else if (angka < 1000000000000)
{
nilaiReturn = Olah(angka, 1000000000, "milyar", 3);
}
// ~ 9,999,999,999,999
else if (angka < 10000000000000)
{
nilaiReturn = Olah(angka, 1000000000000, "triliun");
}
// ~ 99,999,999,999,999
else if (angka < 100000000000000)
{
nilaiReturn = Olah(angka, 1000000000000, "triliun", 2);
}
// ~ 999,999,999,999,999
else if (angka < 1000000000000000)
{
nilaiReturn = Olah(angka, 1000000000000, "triliun", 3);
}
// ~ 9,999,999,999,999,999
else if (angka < 10000000000000000)
{
nilaiReturn = Olah(angka, 1000000000000000, "kuadriliun");
}
// ~ 99,999,999,999,999,999
else if (angka < 100000000000000000)
{
nilaiReturn = Olah(angka, 1000000000000000, "kuadriliun", 2);
}
else
{
if (minus)
{
nilaiReturn = string.Empty;
}
else
{
nilaiReturn = $"{angka} di luar range";
}
}
minus = false;
return nilaiReturn;
}
string Olah(long a, long p, string konversi, int sub = 1)
{
long utama = a / (sub == 2 ? Convert.ToInt64(p * 0.1) : p);
int depan = Convert.ToInt32(utama.ToString().Substring(0, sub));
long belakang = a % p;
return $"{CariIndexAngka(depan)} {konversi} {(belakang == 0 ? data[belakang] : CariIndexAngka(belakang))}";
}
}
}