Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
2 / 2 / 3
Регистрация: 01.03.2015
Сообщений: 131

Перевод в словесную форму

01.04.2015, 18:44. Показов 2207. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Перестали работать кнопка backspace
Не понимаю что ввести в Button 10 чтобы он удалял с поля edit
и самое главное как переделать чтобы вывод был не в label а в Memo
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
try
    {
        int num = Edit1->Text.ToInt();
        ToText(num);
    }
    catch(...)
    {
 
    }
}
 
String __fastcall ToLowerCase(String str, bool NotUse)
{
    return NotUse ? str : AnsiLowerCase(str);
}
 
//---------------------------------------------------------------------------
     void __fastcall TForm1::ToText(int Number)
{
    String Group[4][3] = {{"тысяча ",   "тысячи ",    "тысяч "},
                  {"миллион ",  "миллиона ",  "миллионов "},
                  {"миллиард ", "миллиарда ", "миллиардов "},
                  {"триллион ", "триллиона ", "триллионов "}};
 
    String All[3][10] = {{"", "Один ", "Два ", "Три ", "Четыре ", "Пять ", "Шесть ", "Семь ", "Восемь ", "Девять "},
                 {"", "", "Двадцать ","Тридцать ","Сорок ","Пятьдесят ","Шестьдесят ","Семдесят ","Восемдесят ","Девяносто "},
                 {"","Сто ","Двести ", "Тристо ", "Четыресто ", "Пятьсот ", "Шестьсот ", "Семьсот ","Восемсот ","Девятсот "}};
 
    String El_Nine[10] = { "Десять ",    "Одиннадцать ", "Двенадцать ", "Тринадцать ",   "Четырнадцать ",
                   "Пятнадцать ", "Шестнадцать ", "Семнадцать ", "Восемнадцать ", "Девятнадцать " };
 
    String NumStr = IntToStr(Number); //Number;
    int NumLength = NumStr.Length();
    int Groups = (NumLength-1)/3;
    String str = "";
    for (int i = Groups; i>=0; i--)
    {
        int k = (i==Groups ? NumLength - Groups*3 : 3);
        String NOG_Str = NumStr.SubString(NumLength+1-i*3-k,k);
        String strgr="";
 
        for (int j = 1; j<=k ; j++)
        {
            if (j==k-1 && NOG_Str[j] == '1')
            {
                strgr += ToLowerCase(El_Nine[StrToInt(NOG_Str[k])], i==Groups && j==1);
                break;
            }
            else 
            {
                if (i==1 && j==k && NOG_Str[j] == '1') strgr += ToLowerCase("????", i==Groups && j==1);
                else if (i==1 && j==k && NOG_Str[j] == '2') strgr += ToLowerCase("???", i==Groups && j==1);
                else strgr += ToLowerCase(All[k-j][StrToInt(NOG_Str[j])], i==Groups && j==1);
            }
        }
        String grName = "";
        if (i>0 && NOG_Str.ToInt() > 0)
        {
            int LOG = NOG_Str.ToInt()%100;
            if (LOG > 10 && LOG < 19 ) grName = Group[i-1][2];
            else if (LOG%10 == 1) grName = Group[i-1][0];
            else if (LOG%10 > 1 && LOG%10 < 5) grName = Group[i-1][1];
            else grName = Group[i-1][2];
        }
        str+=strgr + grName;
    }
        
    Label1->Caption = str;
}
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if ((Key < '0') || (Key > '9')) Key = NULL;        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text = "1" ;        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit1->Text = "2" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Edit1->Text = "3" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Edit1->Text = "4" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Edit1->Text = "5" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
Edit1->Text = "6" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
Edit1->Text = "7" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
Edit1->Text = "8" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button9Click(TObject *Sender)
{
Edit1->Text = "9" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button11Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2015, 18:44
Ответы с готовыми решениями:

Перевод числа в словесную форму
Здравствуйте. Помогите пожалуйста. Задано число не более, чем из четырех цифр. Вывести его величину словами (пример: 2013 – две тысячи...

Перевод числа в словесную форму
(на форме именно то что нужно мне нет) Надо чтобы после того, как введешь число от 1 до 1000000000 выводило их словесную форму + рублей....

Перевод числа в словесную форму
Ребят, помогите!!! Нужно написать программу, которая будет переводить число в словесную форму (Например: 125 = сто двадцать пять). С...

7
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
01.04.2015, 19:14
Цитата Сообщение от NextGen25 Посмотреть сообщение
как переделать чтобы вывод был не в label а в Memo
C++
1
2
//Label1->Caption = str;
memo->Lines->Add( str );
Цитата Сообщение от NextGen25 Посмотреть сообщение
что ввести в Button 10 чтобы он удалял с поля edit
C++
1
Edit1->Text = "";
А вообще, такая туча однотипных обработчиков не есть хорошо. Просится один обработчик для всех кнопок, тк циферки можно и из имени кнопки вытаскивать.
1
2 / 2 / 3
Регистрация: 01.03.2015
Сообщений: 131
01.04.2015, 20:36  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Edit1->Text = "";
Ввожу к примеру с клавиатуры 123, а потом нажимаю button 10 (стереть) а он ошибку(
Project Project1.exe raised exception class EConvertError with message is not a valid integer value. Process stopped. Use Step or Run to continue" ошибка в том что между скобка " " пусто что туда поставить?
А с memo всё супер кроме того что, когда водишь большее значение к примеру 1 один потом добавляешь 2 он скидывает на новую строчку а старую не удаляет(
Большое спасибо за те 2 кода)
0
2 / 2 / 3
Регистрация: 01.03.2015
Сообщений: 131
01.04.2015, 21:11  [ТС]
Проблема вот в чём, не показывает main menu хотя всё в него уже вписывал и в код тоже, memo выводит всё но как сделать чтобы показывал всё только на первой строчке , а не перекидывал на вторую?
и последнее Button 10 это кнопка стереть когда там такой код Edit1->Text = "" ; он выдаёт ошибку что нельзя оставлять пустое место между строчками
Заранее благодарен
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
---------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
try
    {
        int num = Edit1->Text.ToInt();
        ToText(num);
    }
    catch(...)
    {
 
    }
}
 
String __fastcall ToLowerCase(String str, bool NotUse)
{
    return NotUse ? str : AnsiLowerCase(str);
}
 
//---------------------------------------------------------------------------
     void __fastcall TForm1::ToText(int Number)
{
    String Group[2][3] = {{"òûñÿ÷à ",   "òûñÿ÷è ",    "òûñÿ÷ "},
                  {"ìèëëèîí ",  "ìèëëèîíà ",  "ìèëëèîíîâ "}};
 
    String All[3][10] = {{"", "Îäèí ", "Äâà ", "Òðè ", "×åòûðå ", "Ïÿòü ", "Øåñòü ", "Ñåìü ", "Âîñåìü ", "Äåâÿòü "},
                 {"", "", "Äâàäöàòü ","Òðèäöàòü ","Ñîðîê ","Ïÿòüäåñÿò ","Øåñòüäåñÿò ","Ñåìäåñÿò ","Âîñåìäåñÿò ","Äåâÿíîñòî "},
                 {"","Ñòî ","Äâåñòè ", "Òðèñòî ", "×åòûðåñòî ", "Ïÿòüñîò ", "Øåñòüñîò ", "Ñåìüñîò ","Âîñåìñîò ","Äåâÿòñîò "}};
 
    String El_Nine[10] = { "Äåñÿòü ",    "Îäèííàäöàòü ", "Äâåíàäöàòü ", "Òðèíàäöàòü ",   "×åòûðíàäöàòü ",
                   "Ïÿòíàäöàòü ", "Øåñòíàäöàòü ", "Ñåìíàäöàòü ", "Âîñåìíàäöàòü ", "Äåâÿòíàäöàòü " };
 
    String NumStr = IntToStr(Number); //Number;
    int NumLength = NumStr.Length();
    int Groups = (NumLength-1)/3;
    String str = "";
    for (int i = Groups; i>=0; i--)
    {
        int k = (i==Groups ? NumLength - Groups*3 : 3);
        String NOG_Str = NumStr.SubString(NumLength+1-i*3-k,k);
        String strgr="";
 
        for (int j = 1; j<=k ; j++)
        {
            if (j==k-1 && NOG_Str[j] == '1')
            {
                strgr += ToLowerCase(El_Nine[StrToInt(NOG_Str[k])], i==Groups && j==1);
                break;
            }
            else 
            {
                if (i==1 && j==k && NOG_Str[j] == '1') strgr += ToLowerCase("????", i==Groups && j==1);
                else if (i==1 && j==k && NOG_Str[j] == '2') strgr += ToLowerCase("???", i==Groups && j==1);
                else strgr += ToLowerCase(All[k-j][StrToInt(NOG_Str[j])], i==Groups && j==1);
            }
        }
        String grName = "";
        if (i>0 && NOG_Str.ToInt() > 0)
        {
            int LOG = NOG_Str.ToInt()%100;
            if (LOG > 10 && LOG < 19 ) grName = Group[i-1][2];
            else if (LOG%10 == 1) grName = Group[i-1][0];
            else if (LOG%10 > 1 && LOG%10 < 5) grName = Group[i-1][1];
            else grName = Group[i-1][2];
        }
        str+=strgr + grName;
    }
        
   Memo1->Lines->Add( str );
}
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if ((Key < '0') || (Key > '9')) Key = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text = "1" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit1->Text = "2" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Edit1->Text = "3" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Edit1->Text = "4" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Edit1->Text = "5" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
Edit1->Text = "6" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
Edit1->Text = "7" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
Edit1->Text = "8" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button9Click(TObject *Sender)
{
Edit1->Text = "9" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button11Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button10Click(TObject *Sender)
{
      Edit1->Text = "0" ;
}
//---------------------------------------------------------------------------
Миниатюры
Перевод в словесную форму  
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
01.04.2015, 21:12
Во-первых. EConvertError - значит, где-то конвертируешь из текста в число. А пустая строка в число никак конвертироваться не может. Это ошибка логики.

Во-вторых, чтобы в мемо все отображалось, как тебе надо, работай со строками мемо. Где надо - удаляй, где надо - пиши в последнюю строку без переноса на новую. И копипаста тебе в этом не помощник, надо еще и думать.
1
2 / 2 / 3
Регистрация: 01.03.2015
Сообщений: 131
01.04.2015, 22:05  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
И копипаста тебе в этом не помощник, надо еще и думать.
Спасибо)
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
02.04.2015, 15:44
Лучший ответ Сообщение было отмечено NextGen25 как решение

Решение

NextGen25, не нужно клепать новых тем, чтобы спросить то же самое.

Насчет main menu - выкладывай проект целиком, так ничего не понятно. И в коде твоем нет ни малейшего упоминания каких бы то ни было меню...

Насчет вывода в мемо:
C++
1
2
3
4
5
    // либо так:
    Memo1->Lines->Strings[ 0 ] = memo_1->Lines->Strings[ 0 ] + str;
    // либо так:
    Memo1->Lines->Strings[ 0 ] = str;
    // ибо ты так и не объяснил, чего хочешь достичь...
Насчет ошибки конвертации:
C++
1
2
3
4
5
    if ( !Edit1->Text.IsEmpty( ) )
    {
        int num = Edit1->Text.ToInt( );
        ToText( num );
    }
Или использовать вместо этого такие функции, как TryStrToInt() и StrToIntDef().

Насчет backspace:
C++
1
2
3
4
    if ( ( ( Key < '0' ) || ( Key > '9' ) ) && Key != VK_BACK )
    {
        Key = NULL;
    }
1
2 / 2 / 3
Регистрация: 01.03.2015
Сообщений: 131
06.04.2015, 18:47  [ТС]
Большое спасибо тебе, просто огромное спасибо!!!!!!!!!!!!!!!!!!!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.04.2015, 18:47
Помогаю со студенческими работами здесь

Перевод числа в словесную форму.
Разработать модуль, позволяющий выполнять перевод числа из цифровой формы в словесную . Исходные данные для преобразования хранить в...

Перевод числа в словесную форму
Здравствуйте. Помогите пожалуйста. Задано число не более, чем из четырех цифр. Вывести его величину словами (пример: 2013 – две тысячи...

Перевод числовой записи в словесную
С клавиатуры вводится любое число(к примеру, 87). Распечатывается &quot;Восемьдесят семь&quot;. Помогите пожалуйста. Спасибо.

Перевод числовой записи в словесную
Доброго времени суток, помогите, кому не сложно с заданием(перевод чисел в слова, нап. 7-семь). Помощь любая нужна: что почитать, где...

Преобразование числового выражения в словесную форму
Мне надо описать каждую функцию для курсовой работы помогите кто-нибудь пожалуйста. Как она работает вообще. Если можно сделать...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru