Вопрос задан 07.11.2023 в 12:10. Предмет Информатика. Спрашивает Равшанов Ахмад.

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

140,52 сто сорок рублей пятьдесят две копейки
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Севостьянова Диана.

Ответ:

Примерно так, только нужно еще со склонением рублей и копеек поиграться.

#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;

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Приведу пример программы на языке C++ для перевода вещественных чисел в текст в денежный формат:

```c++ #include #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(amount); int cents = static_cast((amount - rubles) * 100);

// Выводим результат std::string result = numberToText(rubles) + " рублей " + centsToText(cents); std::cout << result << std::endl;

return 0; } ```

В данной программе используется две функции: `numberToText`, которая преобразует целое число в текст, и `centsToText`, которая преобразует десятичную часть числа в текст для копеек.

Программа сначала считывает вещественное число с клавиатуры. Затем оно разделяется на рубли и копейки. Рубли передаются в функцию `numberToText`, которая возвращает текстовое представление рублей. Копейки передаются в функцию `centsToText`, которая возвращает текстовое представление копеек.

Например, при вводе числа 140.52 программа выведет "сто сорок рублей пятьдесят две копейки".

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос