Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913

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

11.11.2012, 15:21. Показов 2548. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот пытаюсь написать программу для перевода любого целого числа в словесную запись. Например пользователь вводит 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;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2012, 15:21
Ответы с готовыми решениями:

Представить любое введенное натуральное число N > 3 в виде суммы трех простых чисел
Написать программу, представляющую любое введенное натуральное число N&gt;3 в виде суммы трех простых чисел

Вывести на экран новое целое длинное число которое образовано обратной записью
Пользователь вводит длинное целое число.Вывести на экран новое целое длинное число которое образовано обратной записью Например (12345 --...

Представить целое число N в виде суммы M примерно равных целых чисел.
В голове не приходит нормального решения. Именуйте темы осмысленно! Название темы должно максимально полно отражать её содержимое.

4
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
11.11.2012, 16:36
А вы классами пользоваться умеете? Просто могу подсказать, но мой вариант будет содержать классы. Или структуры, например.
1
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
11.11.2012, 16:46
решалась подобная задача Вывести число прописью
Есть ли функция перевода числа в его прописное значение?
1
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
11.11.2012, 17:44  [ТС]
David Sylva, Да, я уже смотрел ту страницу. У форумчанина Day не могу понять сам алгоритм. У него сделано через рекурсивную функцию. А я в них плохо разбираюсь. Да и в чужой программе тоже не могу понять
I.M., Можете просто алгоритм написать, без программы. Лишь бы сам смысл понять. А там я попробую написать программу

Добавлено через 6 минут
В другой ссылке у zitxbit тоже все сложно. Там какая то функция memset(). Только я не знаю что она делает
0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
11.11.2012, 19:07
посмотри про memset http://www.cplusplus.com/refer... ng/memset/
http://en.cppreference.com/w/c... yte/memset
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2012, 19:07
Помогаю со студенческими работами здесь

Составить функцию, которая, получив любое целое число, преобразует его, поменяв в нем первую и последнюю цифр
Ребят..помогите плиззз))вот задачка -не знаю как решить((полазила на форуме нашла похожие,но там без решения((( Составить функцию,...

Разработать функцию, которая формирует стринг, что является словесной записью заданного числа
Постановка задания: Разработать функцию, которая формирует стринг, что является словесным записью (числительным) заданного...

Составить функцию, которая, получив целое число определяет, уменьшается ли оно в целое число раз
задание такое Составить функцию, которая, получив целое число определяет, уменьшается ли оно в целое число раз, если у него удалить...

Написать объявление функции, возвращающую целое число и принимающую указатель на целое число
объявите функцию f2, возвращающую результат целого типа и передающую указатель на переменную а целого типа. вызовите функцию f2 с...

Если целое число М делится на целое число N, то на экран выводится частное от деления, в противном случае выводится сообщение
Если целое число М делится на целое число N, то на экран выводится частное от деления, в противном случае выводится сообщение «M на N...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru