
Написать программу на языке c++ Перевод вещественных чисел в текст в денежный формат Например:
140,52 сто сорок рублей пятьдесят две копейки

Ответы на вопрос

Ответ:
Примерно так, только нужно еще со склонением рублей и копеек поиграться.
#include <iostream>
#include <string>
#include <cmath>
#include <stdio.h>
using namespace std;
const
string edin[] = { "одна", "две", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять" };
string teen[] = { "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать" };
string des[] = { "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто" };
string sto[] = { "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот" };
string thousand[] = { "одна тысяча", "две тысячи", "три тысячи", "четыре тысячи", "пять тысяч", "шесть тысяч", "семь тысяч", "восемь тысяч", "девять тысяч" };
string ConvetToString(int a, int b, int c);
int main()
{
setlocale(LC_ALL, "rus");
double numb, i, drobn;
int natur, dr; //переменные для работы с целым и дробным
int a, b, c, d, e, f; //"временные" переменные для целого
int x, y; //"временные" переменные для дробной части
string odin, dva, tri, chetir, pyat, shest; //переменные для целого
string otr; //переменая для минуса
string one, two, three; //переменные для дробной части
string result;
cout << "Введите число: ";
//cin >> numb;
numb = 12345.56;
drobn = modf(numb, &i);
drobn *= 100;
dr = drobn + 0.5;
natur = (int)numb;
//решение для целой части
//разбиваем число на составные цифры для целой части
a = natur % 10; //число единиц
b = (natur % 100) / 10; //число десятка
c = (natur % 1000) / 100; //число сотни
f = natur / 100000; //число сотен тысяч
e = (natur % 100000) / 10000; //число десятков тысяч
d = (natur % 10000) / 1000; //число тысяч
result = ConvetToString(d, e, f);
result = result + " тысячь ";
result = result + ConvetToString(a, b, c);
result = result + " рублей ";
//решение для дробной части
x = dr / 10;
y = dr % 10;
result = result + ConvetToString( x, y,0);
result = result + " копеек";
cout << result ;
}
string ConvetToString(int a, int b, int c )
{
string result = "", odin, dva, tri;
if (a != 0 && b != 1)
odin = edin[a - 1];
else if (a == 0 && b == 1)
odin = "десять";
else if (a == 0 && b == 0)
odin = "";
if (b == 0)
dva = "";
else if (b == 1 && a != 0)
dva = teen[a - 1];
else if (b != 1)
dva = des[b - 2];
if (c != 0)
tri = sto[c - 1];
if (a == 0 && b == 0 && c == 0)
odin = "ноль";
result = tri + " " + dva + " " + odin;
return result;
}



Приведу пример программы на языке C++ для перевода вещественных чисел в текст в денежный формат:
```c++
#include
// Функция для перевода числа в текст std::string numberToText(int number) { // Массивы с названиями чисел и валюты std::string units[10] = {"", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"}; std::string tens[10] = {"", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"}; std::string teens[10] = {"", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"}; std::string hundreds[10] = {"", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"};
std::string result;
// Идентифицируем сотни, десятки, единицы числа int hundreds_digit = number / 100; int tens_digit = (number / 10) % 10; int units_digit = number % 10;
// Обрабатываем сотни if (hundreds_digit > 0) { result += hundreds[hundreds_digit] + " "; }
// Обрабатываем десятки и единицы if (tens_digit > 1) { result += tens[tens_digit] + " "; result += units[units_digit]; } else if (tens_digit == 1) { result += teens[units_digit]; } else if (units_digit > 0) { result += units[units_digit]; }
return result; }
// Функция для перевода десятичной части числа в текст std::string centsToText(int cents) { std::string result;
// Обрабатываем десятки и единицы центов if (cents > 0) { if (cents < 10) { result += "0"; } result += numberToText(cents) + " копеек"; }
return result; }
int main() { // Вводим число double amount; std::cout << "Введите число: "; std::cin >> amount;
// Разделяем число на рубли и копейки
int rubles = static_cast
// Выводим результат std::string result = numberToText(rubles) + " рублей " + centsToText(cents); std::cout << result << std::endl;
return 0; } ```
В данной программе используется две функции: `numberToText`, которая преобразует целое число в текст, и `centsToText`, которая преобразует десятичную часть числа в текст для копеек.
Программа сначала считывает вещественное число с клавиатуры. Затем оно разделяется на рубли и копейки. Рубли передаются в функцию `numberToText`, которая возвращает текстовое представление рублей. Копейки передаются в функцию `centsToText`, которая возвращает текстовое представление копеек.
Например, при вводе числа 140.52 программа выведет "сто сорок рублей пятьдесят две копейки".


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili