powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Преобразование из "число" в "число прописью"
4 сообщений из 4, страница 1 из 1
Преобразование из "число" в "число прописью"
    #33242693
Denissio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь знает как преобразовать число в строку на русском языке,
содержащую это число прописью? Например "555" преобразуем в "пятьсот
пятьдесят пять". Если у кого есть библиотечка или компонент, киньте
ссылочку, плиз.

Заранее спасибо!


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Преобразование из "число" в "число прописью"
    #33243586
aaaaaaaaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
#include <system.hpp>
#include <stdio.h>
#include <math.h>

void dt( AnsiString &str, int m1 , int m2, int m3, int flag )
{
    switch( m1 )
    {
        case  1 :
            str+="сто ";
            break;
        case  2 :
            str+="двести ";
            break;
        case  3 :
            str+="триста ";
            break;
        case  4 :
            str+="четыреста ";
            break;
        case  5 :
            str+="пятьсот ";
            break;
        case  6 :
            str+="шестьсот ";
            break;
        case  7 :
            str+="семьсот ";
            break;
        case  8 :
            str+="восемьсот ";
            break;
        case  9 :
            str+="девятьсот ";
            break;
    }
    if( m2 ==  0  || m2 >  1  )
    {
        if( m2 >  1  )
        {
            switch( m2 )
            {
                case  2 :
                    str+="двадцать ";
                    break;
                case  3 :
                    str+="тридцать ";
                    break;
                case  4 :
                    str+="сорок ";
                    break;
                case  5 :
                    str+="пятьдесят ";
                    break;
                case  6 :
                    str+="шестьдесят ";
                    break;
                case  7 :
                    str+="семьдесят ";
                    break;
                case  8 :
                    str+="восемьдесят ";
                    break;
                case  9 :
                    str+="девяносто ";
                    break;
            }
        }
        switch( m3 )
        {
            case  1 :
                if( flag ==  2  ) str+="одна ";
                else str+="один ";
                break;
            case  2 :
                if( flag ==  2  ) str+="две ";
                else str+="два ";
                break;
            case  3 :
                str+="три ";
                break;
            case  4 :
                str+="четыре ";
                break;
            case  5 :
                str+="пять ";
                break;
            case  6 :
                str+="шесть ";
                break;
            case  7 :
                str+="семь ";
                break;
            case  8 :
                str+="восемь ";
                break;
            case  9 :
                str+="девять ";
                break;
        }
    }
    else if( m2 ==  1  )
    {
        switch( m3 )
        {
            case  0 :
                str+="десять ";
                break;
            case  1 :
                str+="одиннадцать ";
                break;
            case  2 :
                str+="двенадцать ";
                break;
            case  3 :
                str+="тринадцать ";
                break;
            case  4 :
                str+="четырнадцать ";
                break;
            case  5 :
                str+="пятнадцать ";
                break;
            case  6 :
                str+="шестнадцать ";
                break;
            case  7 :
                str+="семнадцать ";
                break;
            case  8 :
                str+="восемнадцать ";
                break;
            case  9 :
                str+="девятнадцать ";
                break;
        }
    }
    if( flag ==  1  )
    {
        if( m3 ==  0  && m2 ==  0  && m1 ==  0  ) str+="";
        else if( m2 ==  1  )
        {
            str+="миллионов ";
        }
        else
        {
                if( m3 ==  1  ) str+="миллион ";
                else if( m3 >=  2  && m3 <=  4  ) str+="миллиона ";
                else str+="миллионов ";
        }
    }
    else if( flag ==  2  )
    {
        if( m3 ==  0  && m2 ==  0  && m1 ==  0  ) str+="";
        else if( m2 ==  1  )
        {
            str+="тысяч ";
        }
        else
        {
                if( m3 ==  1  ) str+="тысяча ";
                else if( m3 >=  2  && m3 <=  4  ) str+="тысячи ";
                else str+="тысяч ";
        }
    }
    else
    {
        if( m3 ==  0  && m2 ==  0  && m1 ==  0  ) str+="ноль рублей ";
        else if( m2 ==  1  )
        {
            str+="рублей ";
        }
        else
        {
                if( m3 ==  1  ) str+="рубль ";
                else if( m3 >=  2  && m3 <=  4  ) str+="рубля ";
                else str+="рублей ";
        }
    }
}

void MoneyToString( AnsiString &str, double money )
{
    int m1, m2, m3;
    int sum=money;
    unsigned char c;

    str="";

    m1=sum/ 100000000 ;
    m2=sum/ 10000000 -(sum/ 100000000 )* 10 ;
    m3=sum/ 1000000 -(sum/ 10000000 )* 10 ;
    dt( str, m1, m2, m3,  1  );

    m1=sum/ 100000 -(sum/ 1000000 )* 10 ;
    m2=sum/ 10000 -(sum/ 100000 )* 10 ;
    m3=sum/ 1000 -(sum/ 10000 )* 10 ;
    dt( str, m1, m2, m3,  2  );

    m1=sum/ 100 -(sum/ 1000 )* 10 ;
    m2=sum/ 10 -(sum/ 100 )* 10 ;
    m3=sum/ 1 -(sum/ 10 )* 10 ;
    dt( str, m1, m2, m3,  3  );

    c=str[ 1 ];
    c-= 32 ;
    str[ 1 ]=c;

    char buf[ 30 ];
    sprintf( buf, "%0.2f ", money );
    str=str+( strchr( buf, '.' )+ 1  )+" коп.";
}

Примерно так
...
Рейтинг: 0 / 0
Преобразование из "число" в "число прописью"
    #33243694
Denissio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую прикрутить.

Вот еще нашел http://vlak.webzone.ru/rus/projects/convnum.html
Правда не проверял еще.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Преобразование из "число" в "число прописью"
    #33252807
Denissio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2aaaaaaaaaaa:

Спасибо за код! Прикрутил, вроде все нормально работает!


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Преобразование из "число" в "число прописью"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]