Stackoverflow'daki başka bir sayfadan bulduğum bu kod, doğru adlandırmada sayıları sözel karşılıklarına dönüştürür. kod çalışıyor ama mesela ben girişi 1000000 (1 milyon)Bu tamsayı değeri bu programdaki bir dizgeye nasıl dönüşür? (İçindekiler)
if ((number/1000000) > 0)
{
words += NumberToWords(number/1000000) + " Million ";
number %= 1000000;
}
Burada beni karıştırıyor parçası ise, neden kafamı çalışamaz, bu dize kelimeleri [NumberToWords(number/1000000) + " Million "
atar.
Console.WriteLine("Please enter a number to convert [Between 1 and 1 million]:");
int intUser = Int32.Parse(Console.ReadLine());
Console.WriteLine("{0}", NumberToWords(intUser));
Console.ReadKey();
public static string NumberToWords(int number)
{
if (number == 0)
return "Zero";
if (number < 0)
return "Minus " + NumberToWords(Math.Abs(number));
string words = "";
if ((number/1000000) > 0)
{
words += NumberToWords(number/1000000) + " Million ";
number %= 1000000;
}
if ((number/1000) > 0)
{
words += NumberToWords(number/1000) + " Thousand ";
number %= 1000;
}
if ((number/100) > 0)
{
words += NumberToWords(number/100) + " Hundred ";
number %= 100;
}
if (number > 0)
{
if (words != "")
words += "and ";
var unitsMap = new[] { "Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
var tensMap = new[] { "Zero", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
if (number < 20)
words += unitsMap[number];
else
{
words += tensMap[number/10];
if ((number % 10) > 0)
words += "-" + unitsMap[number % 10];
}
}
return words;
}
esasen, bu özyinelemeli kavram ve tamsayı bölme ... hala, kod oldukça – Ian
bu kavramı açıklayabilir iyi yazılmış görünüyor kullanır bana bu program bağlamında, ben sadece C içine alıyorum # – Adib
Kodu bir hata ayıklayıcı ile veya sadece okuma. 'IntUser' inin '1,000,000' olarak ayarlandığını hayal edin. Yaptığı ilk şey, kelimeler + = NumberToWords (sayı/1000000) + "Milyon"; "1" değerini "NumberToWords" içine geçiriyor. Sonra tekrar o yolu takip et. Bu kez sadece son 'if' ('number> 0') girer. Sayı '<20', yani '+ kelimelerdir unitMap [1]' ('' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' – Rob