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

Представить любое целое число словесной записью - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Из char в string http://www.cyberforum.ru/cpp-beginners/thread694605.html
1.У меня есть char X; и в него я записываю "Hello World" как мне его переписать в string XX, чтоб там было тоже "Hello World"??? string str="Hello/World"; char* delim="/"; vector<string> v; split(v,str,delim); for(int i=v.size()-1;i>=0;i--) { cout<<v<<endl;
C++ Как переписать задачи на С++, решенные ранее на Java? Имеется 10 задач на яве. Помогите сделать на С++. 1. Сумма чисел до 0. public static void main ... scanner in=newScanner(System.in); int a=in.nextInt(); int s=0; while (a!=0){ s=s+a; a=in.nextInt(); } http://www.cyberforum.ru/cpp-beginners/thread694598.html
C++ Интерпретатор музыки стандарта BASIC PLAY на С++
У кого нибудь есть функция или класс, который сможет воспроизводить в С++ напрямую музыкальные строки, записанные в стандарте оператора BASIC PLAY ? Например эти: REM The 12 Days of Christmas PLAY "MNT150L8O2CCL4CL8FFL4FL8EFGAA+GL4A.L8A+L4>CL8D<A+AFL4G" PLAY "L2F.L8CCL4CL8FFL4FL8EFGAA+GL4A.>CL8<GAL4A+L8AA+L4>CL8D" PLAY "<A+AFL4GL2F.L8CCL4CL8FFL4FL8EFGAA+GL4A.>CL8<GAL4A+>CL8<G" PLAY...
C++ WinAPI нет изображения
В общем, средствами WinAPI пытаюсь реализовать рекурсивный алгоритм прорисовки концентрических окружностей в заданном количестве. Проблема в том, что обычные рисунки в WinAPI делал с system("pause");, а в функцию её не засунешь - круги будут появляться только после нажатия клавиши и все это дело багует по-жесткому... А без неё изображение на экране не видно. Вот, собственно код. Заранее спасибо...
C++ Заменить все отрицательные числа их модулями http://www.cyberforum.ru/cpp-beginners/thread694589.html
Помогите решить с использованием цикла While Ввести с клавиатуры 10 чисел – положительных и отрицательных. Заменить все отрицательные числа их модулями и напечатать все полученные 10 чисел. Нужно писать без потокового ввода/вывода Заранее спасибо!
C++ Ошибки - цельсий в фаренгейт #include "stdafx.h" #include <stdio.h> #include <iostream> #include <conio.h> using namespace std; void Filework(float* r, int ln) { for(int n=0;n!=ln;n++) подробнее

Показать сообщение отдельно
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
11.11.2012, 15:21     Представить любое целое число словесной записью
Вот пытаюсь написать программу для перевода любого целого числа в словесную запись. Например пользователь вводит 123 а в результате программа должна напечатать "сто двадцать три". Дошел до 999 а дальше не могу. Чем больше число тем больше приходится делать проверок и программа слишком быстро разрастается.
Может есть какой более легкий алгоритм? Подскажите что-нибудь. Буду за любую помощь благодарен

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
#include "stdafx.h"
#include "iostream"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    int n;
    char str_res[50] = "";      // результат
    char *str0_9[] = {"ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"};
    char *str10_19[] = {"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"};
    char *str20_90[] = {"двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"};
    char *str100_900[] = {"сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"};
 
    cout << "Введите целое число: ";
    cin >> n;
 
    if (n>=0 && n<=9)       // 0 1 2 3 4 5 6 7 8 9
        strcpy(str_res, str0_9[n]);
    else
        if (n>=10 && n<=19)     // 10 11 12 13 14 15 16 17 18 19
            strcpy(str_res, str10_19[n%10]);
        else
            if (n>=20 && n<=90 && n%10==0)  // 20 30 40 50 60 70 80 90
                strcpy(str_res, str20_90[n/10-2]);
            else
                if (n>=21 && n<=99)     // 21 22 23 24 25 26 27 28 29  |  31 32 33 34 35 36 37 38 39  | ... | 91 92 93 94 95 96 97 98 99
                {
                    strcpy(str_res, str20_90[n/10-2]);
                    strcat(str_res, " ");
                    strcat(str_res, str0_9[n%10]);
                }
                else
                    if (n>=100 && n<=900 && n%100==0)   // 100 200 300 400 500 600 700 800 900
                        strcpy(str_res, str100_900[n/100-1]);
                    else
                        if (n>=101 && n<=999)           // 101 102 103 104 105 106 107 108 109 | 111 112 113 114 116 ... 198 199 | 201 202 ... | 991 992 993 994 995 996 997 998 999
                        {
                            strcpy(str_res, str100_900[n/100-1]);
                            strcat(str_res, " ");
 
                            n%=100;                     // n = 123; n = 123 % 100 = 23;  n=105; 105%100=5
                            
                            if (n>=0 && n<=9)           // 103 104 105 106 107 108 109 | 203 204 205 206 207 208 209 | ... 903 904 905 906 907 908 909
                                strcat(str_res, str0_9[n]);
                            else
                                if (n>=10 && n<=19)         // 110 111 112 113 114 115 116 117 118 119 | 210 211 ... 219 | ... 991 992 993 994 995 996 997 998 999
                                    strcat(str_res, str10_19[n%10]);
                                else
                                    if (n>=20 && n<=90 && n%10==0)  // 120 130 140 150 160 ... 920 930 940 950 960 970 980 990
                                        strcat(str_res, str20_90[n/10-2]);
                                    else
                                        if (n>=21 && n<=99)         // 121 122 123 .. 129 | 221 222 223 .. 229 | 921 922 923 924 925 926 927 928 929
                                        {
                                            strcat(str_res, str20_90[n/10-2]);
                                            strcat(str_res, " ");
                                            strcat(str_res, str0_9[n%10]);
                                        }
                        }
 
    
 
    cout << str_res << endl;
    
 
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru