0 / 0 / 0
Регистрация: 02.11.2012
Сообщений: 6
1

Преобразование денежной суммы из численного вида в строковый

21.03.2017, 13:58. Показов 2043. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сделать преобразование, чтобы можно было вводить цифрами, а на выходе было бы строковое значение вида "n рублей n копеек"?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2017, 13:58
Ответы с готовыми решениями:

Реализовать метод summa () для вычисление денежной суммы
Поле first — целое положительное число, номинал купюры; номинал может принимать значения 1, 2, 5,...

Реализовать метод summa () для вычисление денежной суммы.
С++ Создать структуру-пару с двумя полями, которые обычно имеют имена first и second. Требуется...

Преобразование денежной суммы, заданной в виде дробного числа, в формат «рубли – копейки»
Разрабатывается приложение «Lab02_02», которое: 1) имеет интерфейс, разработанный с применением...

Ввод денежной суммы
Подскажите, пожалуйста, как реализовать ввод в текстовое поле input, чтобы выполнялись следующие...

1
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.03.2017, 14:03 2
Лучший ответ Сообщение было отмечено Foxx111 как решение

Решение

Для вывода рублей до 1000
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <clocale>
#include <cstdlib>
#include <iostream>
using namespace std;
 
// процедура печати слова рубль с нужным окончанием
void PrintRubles(const int x)
{
    if (x / 10 % 10 == 1) // диапазон 10-19 всегда оканчивается на "рублей"
        cout << "рублей";
    else
    {
        switch (x % 10) // смотрим на последнюю цифру
        {
        case 1:
            cout << "рубль";
            break;
        case 2:
        case 3:
        case 4:
            cout << "рубля";
            break;
        default:
            cout << "рублей";
            break;
        }
    }
}
 
// процедура печати количества рублей прописью
void Print(const int x)
{
    // объявляем массивы строк для удобства работы
    const char *hundreds[] = { // сотни
        "",
        "сто ",
        "двести ",
        "триста ",
        "четыреста ",
        "пятьсот ",
        "шестьсот ",
        "семьсот ",
        "восемьсот ",
        "девятьсот "
    },
    *tens[] = { // десятки
        "",
        "", // попадает в исключения от 10 до 19
        "двадцать ",
        "тридцать ",
        "сорок ",
        "пятьдесят ",
        "шестьдесят ",
        "семьдесят ",
        "восемьдесят ",
        "девяносто "
    },
    *lastNums[] = { // единицы и крайние случаи
        "",
        "один ",
        "два ",
        "три ",
        "четыре ",
        "пять ",
        "шесть ",
        "семь ",
        "восемь ",
        "девять ",
        "десять ",
        "одиннадцать ",
        "двенадцать ",
        "тринадцать ",
        "четырнадцать ",
        "пятнадцать ",
        "шестнадцать ",
        "семнадцать ",
        "восемнадцать ",
        "девятнадцать "
    };
 
    // начинаем обработку числа
    if (x == 1000)
        cout << "тысяча ";
    else
    {
        // разбираем число по цифрам
        const int hundred = x / 100,
            ten = x / 10 % 10,
            // используем тернарный оператор для присваивания в зависимости от значения десятков
            last = (ten == 1 ? x % 100 : x % 10);
 
        cout << hundreds[hundred] << tens[ten] << lastNums[last]; // выводим число прописью
    }
 
    // добавляем окончание
    PrintRubles(x);
    cout << endl; // перевод строки
}
 
// главная функция
int main()
{
    setlocale(LC_ALL, ""); // для вывода кириллицы
 
    int x;
    // считываем значение с проверкой диапазона
    do
    {
        cout << "Введите значение (от 1 до 1000), 0 для выхода: ";
        cin >> x; // считываем значение с клавиатуры
        if (x < 0 || x > 1000)
            cout << "Неверное значение, повторите ввод\n";
        else if (x != 0)
            Print(x); // вызов процедуры
    } while (x != 0); // пока не ввели 0
 
    system("pause"); // пауза
}
1
21.03.2017, 14:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2017, 14:03
Помогаю со студенческими работами здесь

Регулярное выражение для денежной суммы
Друзья. Всем доброго времени суток =) Бьюсь с регуляркой уже пол часа, хотя вопрос очень смешной)...

Реализовать метода summa(). Вычисление денежной суммы
Нужно что-то сделать с кодом, чтобы подсчет суммы денег шел столько раз, сколько захочет...

Конвертер: пересчет денежной суммы в рублях в другую валюту
3. Создайте приложение пересчета денежной суммы в рублях в другую валюту. Для этого создайте:...

Проверка валидности денежной суммы если пустая строка
Всем привет, Для проверки валидности денежной суммы я залавал регулярку /^\d+(\.\d{1,2})?$/ Она...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru