コード例 #1
0
ファイル: Convert.cs プロジェクト: vashe96/NumbersToCurrency
        public static string ConvertNumberUkr(string Number)
        {
            string Result    = "";
            float  FltNumber = float.Parse(Number);
            bool   isResult  = false; //прапорець, який вказує, що перегляд числа завершено

            if (FltNumber > 0)
            {
                int    Digits = Number.Length;
                string Group  = "";
                int    Pos    = 0;
                string Whole  = "";

                int decimalPlace = Number.IndexOf(","); // допоміжні змінні для виділення цілої частини
                if (decimalPlace > 0)
                {
                    Whole = Number.Substring(0, decimalPlace);
                }
                else
                {
                    Whole = Number;
                }

                switch (Digits)     //перебираємо розряди і виконуємо допис слів розрядів
                {
                case 1:
                    Result   = OnesToString.OneToStringUkr(Number);
                    isResult = true;
                    break;

                case 2:
                    Result   = TensToString.TenToStringUkr(Number);
                    isResult = true;
                    break;

                case 3:
                    Pos = (Digits % 3) + 1;
                    if (Whole.Length >= 3 && Number[Whole.Length - 3] == '2' ||     // додатковий блок if-else для правильного запису чисел українською
                        Whole.Length >= 3 && Number[Whole.Length - 3] == '3' ||     // Whole.Length - x визначає першу цифру порядку
                        Whole.Length >= 3 && Number[Whole.Length - 3] == '4')
                    {
                        Group = " сотнi ";
                    }
                    else if (Whole.Length >= 3 && Number[Whole.Length - 3] == '1')
                    {
                        Group = " сотня ";
                    }
                    else
                    {
                        Group = " сотень ";
                    }

                    break;

                case 4:
                case 5:
                case 6:
                    Pos = (Digits % 4) + 1;
                    if (Whole.Length >= 6 && Number[Whole.Length - 6] == '2' ||     // додатковий блок if-else для правильного запису чисел українською
                        Whole.Length >= 6 && Number[Whole.Length - 6] == '3' ||
                        Whole.Length >= 6 && Number[Whole.Length - 6] == '4')
                    {
                        Group = " тисячi ";
                    }
                    else if (Whole.Length >= 6 && Number[Whole.Length - 6] == '1')
                    {
                        Group = " тисяча ";
                    }
                    else
                    {
                        Group = " тисяч ";
                    }
                    break;

                case 7:
                case 8:
                case 9:
                    Pos = (Digits % 7) + 1;
                    if (Whole.Length >= 9 && Number[Whole.Length - 9] == '2' ||     // додатковий блок if-else для правильного запису чисел українською
                        Whole.Length >= 9 && Number[Whole.Length - 9] == '3' ||
                        Whole.Length >= 9 && Number[Whole.Length - 9] == '4')
                    {
                        Group = " мiльйони ";
                    }
                    else if (Whole.Length >= 9 && Number[Whole.Length - 9] == '1')
                    {
                        Group = " мiльйон ";
                    }
                    else
                    {
                        Group = " мiльйонiв ";
                    }
                    break;

                case 10:
                case 11:
                case 12:
                    Pos = (Digits % 10) + 1;
                    if (Whole.Length >= 12 && Number[Whole.Length - 12] == '2' ||     // додатковий блок if-else для правильного запису чисел українською
                        Whole.Length >= 12 && Number[Whole.Length - 12] == '3' ||
                        Whole.Length >= 12 && Number[Whole.Length - 12] == '4')
                    {
                        Group = " мiльярди ";
                    }
                    else if (Whole.Length >= 12 && Number[Whole.Length - 12] == '1')
                    {
                        Group = " мiльярд ";
                    }
                    else
                    {
                        Group = " мiльярдiв ";
                    }
                    break;

                default:
                    isResult = true;
                    break;
                }
                if (!isResult) //для кожного розряду рекурсивно виконуємо допис слова розряду
                {
                    if (Number.Substring(0, Pos) != "0" && Number.Substring(Pos) != "0")
                    {
                        try
                        {
                            Result = ConvertNumberUkr(Number.Substring(0, Pos)) + Group + ConvertNumberUkr(Number.Substring(Pos));
                        }
                        catch
                        { }
                    }
                    else
                    {
                        Result = ConvertNumberUkr(Number.Substring(0, Pos)) + ConvertNumberUkr(Number.Substring(Pos));
                    }
                }
                if (Result.Trim().Equals(Group.Trim()))
                {
                    Result = "";
                }
            }
            return(Result.Trim());
        }
コード例 #2
0
        public static string TenToStringUkr(string Number)
        {
            string Tens   = "";
            int    number = Int32.Parse(Number);

            switch (number)
            {
            case 10:
                Tens = "десять";
                break;

            case 11:
                Tens = "одинадцять";
                break;

            case 12:
                Tens = "дванадцять";
                break;

            case 13:
                Tens = "тринадцять";
                break;

            case 14:
                Tens = "чотирнадцять";
                break;

            case 15:
                Tens = "п'ятнадцять";
                break;

            case 16:
                Tens = "шiстнадцять";
                break;

            case 17:
                Tens = "ciмнадцять";
                break;

            case 18:
                Tens = "вiсiмнадцять";
                break;

            case 19:
                Tens = "дев'ятнадцять";
                break;

            case 20:
                Tens = "двадцять";
                break;

            case 30:
                Tens = "тридцять";
                break;

            case 40:
                Tens = "сорок";
                break;

            case 50:
                Tens = "п'ятдесят";
                break;

            case 60:
                Tens = "шiстдесят";
                break;

            case 70:
                Tens = "сiмдесят";
                break;

            case 80:
                Tens = "вiсiмдесят";
                break;

            case 90:
                Tens = "дев'яносто";
                break;

            default:
                if (number > 0)
                {
                    //десятки містять одиниці, тому стрічку з результатом створюємо за допомогою
                    //розбиття заданої стрічки на підстрічки та
                    //конкатенції результатів методу десятків до слів та методу одиниць до слів

                    Tens = TenToStringUkr(Number.Substring(0, 1) + "0") + " " + OnesToString.OneToStringUkr(Number.Substring(1));
                }
                break;
            }
            return(Tens);
        }