Для решения задачи по преобразованию натурального числа в текст на русском языке в C++, давайте разобьем процесс на несколько шагов. Основная цель — создать программу, которая вводит число и выводит его словами.
Давайте рассмотрим, как это сделать:
- Ввод числа: Мы будем использовать стандартный ввод для получения значения от пользователя.
- Преобразование числа в слова: Создадим функцию, которая преобразует число в строку, содержащую его словесное представление.
- Формирование итоговой строки: После преобразования числа в слова добавим слово "учеников".
- Вывод результата: Напечатаем результат на экран.
Программа на C++
#include <iostream>
#include <string>
// Функция для преобразования чисел в слова
std::string numberToWords(int n) {
const std::string units[] = {
"", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять",
"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать",
"шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"
};
const std::string tens[] = {
"", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят",
"семьдесят", "восемьдесят", "девяносто"
};
const std::string hundreds[] = {
"", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот",
"семьсот", "восемьсот", "девятьсот"
};
const std::string thousands[] = {
"", "одна тысяча", "две тысячи", "три тысячи", "четыре тысячи", "пять тысяч",
"шесть тысяч", "семь тысяч", "восемь тысяч", "девять тысяч"
};
std::string words;
if (n >= 1000) {
words += thousands[n / 1000];
n %= 1000; // Убираем тысячи
if (n > 0 && !words.empty()) words += " "; // Добавляем пробел
}
if (n >= 100) {
words += hundreds[n / 100];
n %= 100; // Убираем сотни
if (n > 0 && !words.empty()) words += " "; // Добавляем пробел
}
if (n >= 20) {
words += tens[n / 10];
n %= 10; // Убираем десятки
if (n > 0 && !words.empty()) words += " "; // Добавляем пробел
}
if (n > 0) {
words += units[n];
}
return words;
}
int main() {
int number;
std::cout << "Введите натуральное число (не более 1 миллиона): ";
std::cin >> number;
if (number <= 0 || number > 1000000) {
std::cout << "Ошибка: число должно быть натуральным и не превышать миллион." << std::endl;
return 1;
}
std::string result = numberToWords(number) + " учеников";
std::cout << result << std::endl;
return 0;
}
Пояснение к коду:
- Определение массивов: В коде используются массивы для хранения слов для единиц, десятков, сотен и тысяч.
- Функция
numberToWords: Это основная функция для преобразования числа в слова. Она сначала извлекает тысячи, сотни, десятки и единицы и формирует окончательную строку.
- Ввод числа: Программа запрашивает у пользователя ввести число и проверяет, что оно находится в допустимых пределах.
- Вывод: Конечный результат выводится на экран.
Как использовать программу:
Скомпилируйте код в среде разработки C++ (или используйте онлайн компилятор). При запуске программы, введите число, и программа выведет его словесное представление с добавлением слова "учеников".
Если у вас есть вопросы или требуется дополнительная помощь, не стесняйтесь спрашивать!