Для решения этой задачи в C# нужно создать программу, которая преобразует введенное натуральное число в его текстовое представление на русском языке. В этой задаче важно учитывать правильное склонение числительных в зависимости от их разрядности. Мы можем разделить число на составляющие его разряды и для каждого из них подобрать соответствующее слово. Ниже приведен пример такой программы:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите натуральное число N (N {NumberToWords(number)}");
}
else
{
Console.WriteLine("Некорректный ввод. Пожалуйста, введите натуральное число от 1 до 10000.");
}
}
static string NumberToWords(int number)
{
if (number == 0)
return "ноль";
if (number == 10000)
return "десять тысяч";
string[] units = { "", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять" };
string[] teens = { "десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать" };
string[] tens = { "", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто" };
string[] hundreds = { "", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот" };
string words = "";
if ((number / 1000) > 0)
{
if (number / 1000 == 1)
words += "тысяча ";
else if (number / 1000 < 5)
words += units[number / 1000] + " тысячи ";
else
words += units[number / 1000] + " тысяч ";
number %= 1000;
}
if ((number / 100) > 0)
{
words += hundreds[number / 100] + " ";
number %= 100;
}
if ((number / 10) > 1)
{
words += tens[number / 10] + " ";
number %= 10;
}
if (number > 0 && number < 10)
{
words += units[number] + " ";
}
else if (number >= 10 && number < 20)
{
words += teens[number - 10] + " ";
}
return words.Trim();
}
}
Объяснение программы:
Ввод и проверка данных:
- Программа запрашивает у пользователя ввод натурального числа
N
.
- Используется
int.TryParse
для проверки корректности ввода. Убедитесь, что число находится в диапазоне от 1 до 10000.
Массивы строк:
- Определены массивы строк для единиц (
units
), десятков (tens
), сотен (hundreds
) и чисел от 10 до 19 (teens
).
Преобразование чисел в слова:
- Программа последовательно обрабатывает каждый разряд числа: тысячи, сотни, десятки и единицы.
- Для каждого разряда добавляется соответствующее слово из массива.
- Обрабатываются особые случаи для чисел от 10 до 19, а также для склонения слова "тысяча".
Форматирование результата:
- Удаляются лишние пробелы в конце строки перед выводом результата.
Эта программа позволяет преобразовать любое число от 1 до 10000 в его текстовое представление на русском языке.