Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 2
Регистрация: 09.11.2013
Сообщений: 7

Модуль для перевода числовых записей в строковые

17.11.2013, 18:32. Показов 547. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Модуль для перевода числовых записей ("1213") в строковые ("тысяча двести тринадцать") и обратно. Предусмотреть числа максимально возможного диапазона значений и форм записи.
Часть программы у меня есть,дальше не могу справиться.
Эта программа переводит числа до 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
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
 
const char
 *str0[10]=
 {"","один ","два ","три ","четыре ",
 "пять ","шесть ","семь ","восемь ","девять "},
 *str10[10]=
 {"десять ","одиннадцать ","двенадцать ","тринадцать ","четырнадцать ","пятнадцать ",
 "шестнадцать ","семнадцать ","восемнадцать ","девятнадцать "},
 *str1[10]=
 {"","","двадцать ","тридцать ","сорок ",
 "пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "},
 *str2[10]=
 {"","сто ","двести ","триста ","четыреста ",
 "пятьсот ","шестьсот ","семьсот ","восемьсот ","девятьсот "},
 *thous[10]={"","одна","две","три","четыре","пять","шесть","семь","восемь","девять"},
 *thouschar[5]={"","тысяч","миллион","миллиард","триллион"}
;
// главная программа:
int main()
{
 unsigned d[3],n,
 t,k,i;
 char sum[80];
 clrscr();
 cout<< "введите натуральное число n "; cin>> n;
 t=n; k=0;
 for(i=0;i<3;i++) d[i]=0;
 while (t>=10) {
   d[k++]=t%10; t=t/10;
 }
 d[k++]=t%10;
 unsigned d0 = d [0],d1 = d [1],d2 = d [2];
 strcpy(sum,"");
 strcat(sum,str2[d2]);
 if(d1==1) strcat(sum,str10[d0]);
 else{strcat(sum,str1[d1]);strcat(sum,str0[d0]);}
  if (n==0) strcpy(sum,"ноль");
 else sum[strlen(sum)-1]=0;
 //вывод:
 printf("\n%d число прописью:\n%s.\n",n,sum);
 return 0;
 getch();
}
может кто-нибудь помочь сделать все это в диапазоне до миллионов,и чтобы было все с окончаниями,и т.д
так-то я пыталась,но программа не работает.мой мозг не способен наверное на такое..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.11.2013, 18:32
Ответы с готовыми решениями:

Составить модуль, реализующий следующие алгоритмы для произвольных квадратных числовых матриц
Составить модуль, реализующий следующие алгоритмы для произвольных квадратных числовых матриц: проверить, является ли матрица...

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

Нужен модуль для табличного представления записей
Доброго времени суток! Есть как бы журнал, в который пользователи добавляют какие-либо записи. Для удобства просмотра всех записей на...

1
0 / 0 / 2
Регистрация: 09.11.2013
Сообщений: 7
29.11.2013, 18:51  [ТС]
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
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
 
const char
 *str0[10]=
 {"","один ","два ","три ","четыре ",
 "пять ","шесть ","семь ","восемь ","девять "},
 *str10[10]=
 {"десять ","одиннадцать ","двенадцать ","тринадцать ","четырнадцать ","пятнадцать ",
 "шестнадцать ","семнадцать ","восемнадцать ","девятнадцать "},
 *str1[10]=
 {"","","двадцать ","тридцать ","сорок ",
 "пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "},
 *str2[10]=
 {"","сто ","двести ","триста ","четыреста ",
 "пятьсот ","шестьсот ","семьсот ","восемьсот ","девятьсот "},
 *thous[10]={"","одна ","две ","три ","четыре ","пять ","шесть ","семь ",
 "восемь ","девять "},
 *thouschar[2][3] = {{"миллион ", "миллиона ", "миллионов " },
            {"тысяча ",  "тысячи ",   "тысяч " }}
;
// главная программа:
int main()
{
int d[9],k,i,t;
unsigned int n;
 char sum[300];
 clrscr();
 cout<< "введите натуральное число n "; cin>> n;
 t=n; k=0;
 for(i=0;i<9;i++) d[i]=0;
 while (t>=10) {
   d[k++]=t%10; t=t/10;
 }
 d[k++]=t%10;
 unsigned d0=d[0],d1=d[1],d2=d[2],d3=d[3],d4=d[4],d5=d[5],d6=d[6],
      d7=d[7],d8=d[8];
 strcpy(sum,"");
 strcat(sum,str2[d8]);
 if(d7==1) strcat(sum,str10[d6]);
 else
{ strcat(sum,str1[d7]);
  strcat(sum,str2[d6]);
}
 if(d7>10 && d7<20 || d6>4) strcat(sum,thouschar[1][3]);
 if(d6==1) strcat(sum,thouschar[1][1]);
 else strcat(sum,thouschar[1][2]);
 
 
 
 strcat(sum,str2[d5]);
 if (d4==1) strcat(sum,str10[d3]);
 else{
 strcat(sum,str1[d4]);
 strcat(sum,thous[d3]);
 }
 
 if (d4>10 && d4<20 || d3>4) strcat(sum,thouschar[2][3]);
 if (d3==1) strcat(sum,thouschar[2][1]);
 else strcat(sum,thouschar[2][2]);
 
 strcat(sum,str2[d2]);
 if(d1==1) strcat(sum,str10[d0]);
 else{strcat(sum,str1[d1]);strcat(sum,str0[d0]);}
  if (n==0) strcpy(sum,"ноль");
 else sum[strlen(sum)-1]=0;
 //вывод:
 printf("\n%d число прописью:\n%s.\n",n,sum);
 return 0;
 }
Так,здесь не получается с миллионами,там если ввожу тип n как unsigned long, то он вообще выводит null.
И чего-то с тысячами напортачила,если например введу 21 900, он мне напишет тысяч двадцать одна девятьсот.
Может ктоо нибудь помоооожет?
Просто я перерыла уже весь интернет,а разобраться не могу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2013, 18:51
Помогаю со студенческими работами здесь

Библиотечный модуль для работы с двунаправленным списком записей
Здравствуйте. Помогите пожалуйста... В приложении к заданию имеется файл библиотечного модуля для работы с двунаправленным списком...

Где находятся модуль команды и модуль набора записей
Доброго времени суток! Модуль команды где он находится? Модуль набора записей где находится? Добавлено через 12 часов 21 минуту ...

Отцентрировать меню и модуль перевода сайта
Не получается отцентрировать меню и модуль перевода сайта(не могу найти отвечающий за это код). Нужно сделать меню так, чтобы в меню...

Нужен модуль перевода из шестнадцатеричной системы в десятичную и больше или меньше
Дан массив А чисел, записанных в шестнадцатеричной системе счисления. Отсортировать его в порядке убывания. Ответ получить в...

Ввод в переменную числовых и не числовых данных
Здравствуйте, у меня есть программа (сегодня писал о ней в одной из предыдущих тем), там есть цикл в котором несколько раз выводится либо 1...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru