Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330

Переводчик

27.07.2011, 21:22. Показов 1924. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени!
Подскажите решение проблемки:
Есть код который переводит числа в пропись тобишь "123" в "сто двадцать три"
Вот собственно код:
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
 
 
#pragma warning(disable:4514)
 
static double vseg[] = { 1e9, 1e6, 1e3, 1};
static char dsot[][11] =
{ "",          "сто ",       "двести ",   "триста ",     "четыреста ",
   "пятьсот ",  "шестьсот ",  "семьсот ",  "восемьсот ",  "девятьсот "};
static char ddec[][13] =
{ "",          "десять ",    "двадцать ", "тридцать ",   "сорок ",
   "пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "};
static char dde [][14] =
{ "одиннадцать ", "двенадцать ",  "тринадцать ",
   "четырнадцать ","пятнадцать ",  "шестнадцать ",
   "семнадцать ",  "восемнадцать ","девятнадцать " };
static char ded [][8] =
{ "",          "один ",      "два ",      "три ",        "четыре ",
   "пять ",     "шесть ",     "семь ",     "восемь ",     "девять "};
static char dedt[][6]    = { "одна ", "две " };
static char dseg[][9]    = { "миллиард", "миллион", "тысяч", "рубл" };
static char dsem[][3][5] = {{ " ",  "а ", "ов " },  // миллиард
                             { " ",  "а ", "ов " },  // миллион
                             { "а ", "и ", " "   },  // тысяч
                             { "ь ", "я ", "ей " },  // рублей
                             { "йка","йки","ек"  }}; // копеек
 
static int
HowTell (long n)
{
   n %= 100;
   if (n >= 10  &&  n <= 20) return  3;
   n %= 10;
   return  n == 1? 1: n <= 4  &&  n > 0? 2: 3;
}
 
static double
Round (double op)
{
   return  floor(op + 0.5);
}
 
static double
Round (double op,double pow)
{
   if (pow <= 0.)  return  op;
   if (op>0. && op<pow || op<0. && op>pow) return 0.;
   op = floor(op/pow + 0.5) * pow;
   return  op>0. && op<pow || op<0. && op>pow? 0.: op;
}
 
char*
WriteSum (double v,char *buf,bool kop,bool up)
{
   buf[0] = 0;
   if (v >= 1e12  ||  v <= 0.009) return buf;
   v = Round(v,0.01);
   for (int seg=0; seg<4; seg++) {
     int vt = int(v / vseg[seg]);
     v -= vseg[seg] * vt;
     if (vt  ||  seg == 3) {
       int how = HowTell(vt);
           // 1 - миллиард   миллион   тысяча рубль  копейка
           // 2 - миллиарда  миллиона  тысячи рубля  копейки
           // 3 - миллиардов миллионов тысяч  рублей копеек
       if (vt) {
         strcat(buf,dsot[vt/100]);  vt %= 100;
         if (vt >= 20  ||  vt <= 10) {
           strcat(buf,ddec[vt/10]);  vt %= 10;
           if (seg == 2  &&  (vt == 1  ||  vt == 2))
                 strcat(buf,dedt[vt-1]);
           else  strcat(buf,ded[vt]);
         } else  strcat(buf,dde[vt-11]);
       } else if (buf[0] == 0)  strcat(buf,"ноль ");
       strcat(buf,dseg[seg]);
       strcat(buf,dsem[seg][how-1]);
     }
   }
   if (kop)
       sprintf(buf+strlen(buf),"%02.0lf копе%s",
                               v*100,
                               dsem[4][HowTell((long)Round(v*100))-1]);
 
   if (up) CharUpper(buf);
   else    CharUpperBuff(buf,1);
   return  buf;
}
В этой строке:
C++
1
2
3
4
if (kop)
       sprintf(buf+strlen(buf),"%02.0lf копе%s",
                               v*100,
                               dsem[4][HowTell((long)Round(v*100))-1]);
Выводится результат, но я использую оконное приложение, а не консольное. Поэтому мне нужно вывести результат ну скажем в "Edit"
За нубство не пинать, я программист-любитель ))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.07.2011, 21:22
Ответы с готовыми решениями:

Переводчик
Создал проект визуальный интерфейс переводчика. Мне надо добавить к этому делу &quot;Выбор словаря&quot;. Как это осуществить не знаю.

Переводчик мер
Вот код: a = StrToFloat(Edit3-&gt;Text); c = a/0.01; // + Edit5-&gt;Text = FloatToStr(c); // в сантиметры a =...

Переводчик с английского на русский и наоборот
Может есть у кого то переводчик на с++ с английского на русский и наоборот работающий? посмотрел похожие темы но ничего особо дельного не...

2
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
27.07.2011, 21:32
Цитата Сообщение от S0lexV Посмотреть сообщение
"Edit"
какой едит? MFC, WinApi, VLC,.NET, Qt, wxWidgets
0
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
28.07.2011, 11:20  [ТС]
Ну Эдит который на форме )) TEdit, Короче результат нужно привести к типу "Ansistring".
ЗЫ. C++ Builder 6
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.07.2011, 11:20
Помогаю со студенческими работами здесь

Русско-Английский переводчик C++ Builder
Здравствуйте,нужна срочно программа переводчик с русского на английский в билдере .Кому не трудно помогите пожалуйста,возможно уже были...

Курсовая - переводчик (словарь) на С++
Доброго времени суток! Меня зовут Алексей, я студент 2го курса колледжа по специальности Разработка ПО, вот подошло время первых...

Словарь-переводчик. вывод в textBox
Вроде всё компилируется нормально, но выводить не хочет, помогите разобраться в чём ошибка, заранее благодарен! Проект прикреплён к...

Переводчик
Есть задание написать переводчик русских букв в транслит и обратно,все хорошо но есть проблема,при переводе букв ч,щ,ш в транслит все...

Переводчик
Всем привет=) У меня тут вот какой вопросик=) Нужно реализовать &quot;Переводчик&quot;=) Есть файл в нем около 2-3к строк=) И есть другой...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru