Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_dedsec_
1 / 1 / 0
Регистрация: 19.11.2014
Сообщений: 11
#1

Преобразовать число int в строку прописью char - C++

19.11.2014, 19:45. Просмотров 540. Ответов 5
Метки нет (Все метки)

Например, вводим 40, 3 должно выдать sorok rubley tridcat kopeek.
Пересмотрел много задач с похожей тематикой, но во-первых, ни одна не запускается в компиляторе девс++(куча ошибок), во- вторых все написаны с помощью функций, которые я еще не изучал.
Откликнувшимся спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 19:45     Преобразовать число int в строку прописью char
Посмотрите здесь:

C++ Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку.
Конвертация числа в строку (int to char) C++
C++ Как преобразовать int в char?
C++ 8-и значное число типа int преобразовать в строчку char\string
Преобразование int и char в строку C++
C++ Преобразовать int в char *
C++ Как int преобразовать в char?
Число int в десятичной преобразовать в char - двоичной C++
C++ Как преобразовать int в char
C++ Невозможно преобразовать параметр из int в const char
C++ Как преобразовать строку char в массив int?
C++ Преобразовать int в char

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4944 / 4282 / 1431
Регистрация: 14.04.2014
Сообщений: 16,807
19.11.2014, 20:03     Преобразовать число int в строку прописью char #2
Ну хоть что-то нашёл? Давай текст.
_dedsec_
1 / 1 / 0
Регистрация: 19.11.2014
Сообщений: 11
19.11.2014, 20:12  [ТС]     Преобразовать число int в строку прописью char #3
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
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
#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 )+" коп.";
}
такой код нашел
я вижу что здесь аж до миллиона, мне бы хоть до 100 сделать и суть понять
D_in_practice
330 / 330 / 159
Регистрация: 02.10.2014
Сообщений: 666
19.11.2014, 20:26     Преобразовать число int в строку прописью char #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сегодня писал на Dev C++
Буквенные величины
Переделал:
Код на C++
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
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
#include <iostream>
 
using namespace std;
 
void D_Print(int n, int p){
    
    int d = n / 10;
    switch (d){
        
        case 9:
            cout << "äåâÿГ*îñòî ";
            break;
        case 8:
            cout << "âîñåìäåñÿò ";
            break;
        case 7:
            cout << "ñåìäåñÿò ";
            break;
        case 6:
            cout << "øåñòüäåñÿò ";
            break;
        case 5:
            cout << "ïÿòüäåñÿò ";
            break;
        case 4:
            cout << "ñîðîê ";
            break;
        case 3:
            cout << "òðèäöГ*ГІГј ";
            break;
        case 2:
            cout << "äâГ*äöГ*ГІГј ";
            break;
        case 1:
            switch (n % 10){
                
                case 9:
                    cout << "äåâÿГ*Г*äöГ*ГІГј ";
                    break;
                case 8:
                    cout << "âîñåìГ*Г*äöГ*ГІГј ";
                    break;
                case 7:
                    cout << "Г±ГҐГ¬Г*Г*äöГ*ГІГј ";
                    break;
                case 6:
                    cout << "ГёГҐГ±ГІГ*Г*äöГ*ГІГј ";
                    break;
                case 5:
                    cout << "ГЇГїГІГ*Г*äöГ*ГІГј ";
                    break;
                case 4:
                    cout << "÷åòûðГ*Г*äöГ*ГІГј ";
                    break;
                case 3:
                    cout << "òðèГ*Г*äöГ*ГІГј ";
                    break;
                case 2:
                    cout << "äâåГ*Г*äöГ*ГІГј ";
                    break;
                case 1:
                    cout << "îäèГ*Г*Г*äöГ*ГІГј ";
                    break;
                case 0:
                    cout << "äåñÿòü ";
                    break;
            }       
    }
    
    if (d != 1)
        switch (n % 10){
            case 9:
                cout << "äåâÿòü ";
                break;
            case 8:
                cout << "âîñåìü ";
                break;
            case 7:
                cout << "ñåìü ";
                break;
            case 6:
                cout << "ГёГҐГ±ГІГј ";
                break;
            case 5:
                cout << "ГЇГїГІГј ";
                break;
            case 4:
                cout << "÷åòûðå ";
                break;
            case 3:
                cout << "òðè ";
                break;
            case 2:
                cout << "äâГ* ";
                break;
            case 1:
                 if (p == 1)
                     cout << "îäèГ* ";
                else
                     cout << "îäГ*Г* ";
                break;
            case 0:
                cout << "Г*îëü ";
                break;
        }
}
 
int main(){
    
    char text[255]; 
    cin.get(text,255);
    
    int i = -1;
    int r = 0;
    int k = 0;
    int exit = 0;
    while(text[++i] != '.' && text[i] != ',' && text[i] != '\0'){
        
        if ('0' <= text[i] && text[i] <= '9')
            r = r * 10 + text[i] - '0';
        else{
            cout << "ÂâåäåГ*Г*Г*Гї ñòðîêГ* Г*ГҐ ÷èñëî!" <<endl;
            exit = 1;
            break;
        }           
    }
    
    if (text[i] != '\0' && exit == 0)
        ++i;
    
    while(text[i] != '\0' && exit == 0){
        
        if ('0' <= text[i] && text[i] <= '9')
            k = k * 10 + text[i] - '0';
        else{
            cout << "ÂâåäåГ*Г*Г*Гї ñòðîêГ* Г*ГҐ ÷èñëî!" <<endl;
            exit = 1;
            break;
        }           
        ++i;    
    }
    
    if (exit == 0 && k < 10)
         k *= 10;
         
     if (k >= 100 && exit == 0){
        cout << "ГЌГҐГўГҐГ°Г*îå ÷èñëî ìèëëèìåòðîâ!" <<endl;
        exit = 1;
    }
    
    if (r >= 100 && exit == 0){
        cout << "Ñëèøêîì áîëüøîå ÷èñëî!" <<endl;
        exit = 1;
    }
    
    if (exit == 0){
        
        r %= 100;
        
        if (r != 0 ){
            D_Print(r, 1);
            
            if (5 <= r % 10 && r % 10 <= 9 || r % 10 == 0 ||
                (11 <= r && r <= 19))
                cout << "ðóáëåé ";
            else if (r % 10 == 1)
                cout << "ðóáëü ";
            else
                cout << "ðóáëÿ ";
        }
                    
        D_Print(k, 2);
        
        if (5 <= k % 10 && k % 10 <= 9 || k % 10 == 0 ||
                (11 <= k && k <= 19))
                cout << "êîïååê ";
            else if (k % 10 == 1)
                cout << "êîïåéêГ* ";
            else
                cout << "êîïåéêè ";       
    }
}


p - определяет только как пишется слово один, для рубля один, для копейки одна
_dedsec_
1 / 1 / 0
Регистрация: 19.11.2014
Сообщений: 11
19.11.2014, 20:40  [ТС]     Преобразовать число int в строку прописью char #5
все супер,спасибо.
Единственное что, если вводить 12,5 то пишет двенадцать рублей пятдесят ноль копеект, но это мелочи.
Большое спасибо.
D_in_practice
330 / 330 / 159
Регистрация: 02.10.2014
Сообщений: 666
19.11.2014, 20:50     Преобразовать число int в строку прописью char #6
Спасибо исправил (строки 102 -107)
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
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
#include <iostream>
 
using namespace std;
 
void D_Print(int n, int p){
    
    int d = n / 10;
    switch (d){
        
        case 9:
            cout << "äåâÿГ*îñòî ";
            break;
        case 8:
            cout << "âîñåìäåñÿò ";
            break;
        case 7:
            cout << "ñåìäåñÿò ";
            break;
        case 6:
            cout << "øåñòüäåñÿò ";
            break;
        case 5:
            cout << "ïÿòüäåñÿò ";
            break;
        case 4:
            cout << "ñîðîê ";
            break;
        case 3:
            cout << "òðèäöГ*ГІГј ";
            break;
        case 2:
            cout << "äâГ*äöГ*ГІГј ";
            break;
        case 1:
            switch (n % 10){
                
                case 9:
                    cout << "äåâÿГ*Г*äöГ*ГІГј ";
                    break;
                case 8:
                    cout << "âîñåìГ*Г*äöГ*ГІГј ";
                    break;
                case 7:
                    cout << "Г±ГҐГ¬Г*Г*äöГ*ГІГј ";
                    break;
                case 6:
                    cout << "ГёГҐГ±ГІГ*Г*äöГ*ГІГј ";
                    break;
                case 5:
                    cout << "ГЇГїГІГ*Г*äöГ*ГІГј ";
                    break;
                case 4:
                    cout << "÷åòûðГ*Г*äöГ*ГІГј ";
                    break;
                case 3:
                    cout << "òðèГ*Г*äöГ*ГІГј ";
                    break;
                case 2:
                    cout << "äâåГ*Г*äöГ*ГІГј ";
                    break;
                case 1:
                    cout << "îäèГ*Г*Г*äöГ*ГІГј ";
                    break;
                case 0:
                    cout << "äåñÿòü ";
                    break;
            }       
    }
    
    if (d != 1)
        switch (n % 10){
            case 9:
                cout << "äåâÿòü ";
                break;
            case 8:
                cout << "âîñåìü ";
                break;
            case 7:
                cout << "ñåìü ";
                break;
            case 6:
                cout << "ГёГҐГ±ГІГј ";
                break;
            case 5:
                cout << "ГЇГїГІГј ";
                break;
            case 4:
                cout << "÷åòûðå ";
                break;
            case 3:
                cout << "òðè ";
                break;
            case 2:
                cout << "äâГ* ";
                break;
            case 1:
                 if (p == 1)
                     cout << "îäèГ* ";
                else
                     cout << "îäГ*Г* ";
                break;
            //case 0:
            //   cout << "Г*îëü ";
            //    break;
        }
   if (n = 0)
    cout << "Г*îëü ";
}
 
int main(){
    
    char text[255]; 
    cin.get(text,255);
    
    int i = -1;
    int r = 0;
    int k = 0;
    int exit = 0;
    while(text[++i] != '.' && text[i] != ',' && text[i] != '\0'){
        
        if ('0' <= text[i] && text[i] <= '9')
            r = r * 10 + text[i] - '0';
        else{
            cout << "ÂâåäåГ*Г*Г*Гї ñòðîêГ* Г*ГҐ ÷èñëî!" <<endl;
            exit = 1;
            break;
        }           
    }
    
    if (text[i] != '\0' && exit == 0)
        ++i;
    
    while(text[i] != '\0' && exit == 0){
        
        if ('0' <= text[i] && text[i] <= '9')
            k = k * 10 + text[i] - '0';
        else{
            cout << "ÂâåäåГ*Г*Г*Гї ñòðîêГ* Г*ГҐ ÷èñëî!" <<endl;
            exit = 1;
            break;
        }           
        ++i;    
    }
    
    if (exit == 0 && k < 10)
         k *= 10;
         
     if (k >= 100 && exit == 0){
        cout << "ГЌГҐГўГҐГ°Г*îå ÷èñëî êîïååê!" <<endl;
        exit = 1;
    }
    
    if (r >= 100 && exit == 0){
        cout << "Ñëèøêîì áîëüøîå ÷èñëî!" <<endl;
        exit = 1;
    }
    
    if (exit == 0){
        
        r %= 100;
        
        if (r != 0 ){
            D_Print(r, 1);
            
            if (5 <= r % 10 && r % 10 <= 9 || r % 10 == 0 ||
                (11 <= r && r <= 19))
                cout << "ðóáëåé ";
            else if (r % 10 == 1)
                cout << "ðóáëü ";
            else
                cout << "ðóáëÿ ";
        }
                    
        D_Print(k, 2);
        
        if (5 <= k % 10 && k % 10 <= 9 || k % 10 == 0 ||
                (11 <= k && k <= 19))
                cout << "êîïååê ";
            else if (k % 10 == 1)
                cout << "êîïåéêГ* ";
            else
                cout << "êîïåéêè ";       
    }
}
Yandex
Объявления
19.11.2014, 20:50     Преобразовать число int в строку прописью char
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru