|
|
Знаете ли Вы, что ... | |
...до того как открыть новую тему, стоит использовать поиск: такая тема уже может существовать. | |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
C/C++, Прикладные вопросы Программирование на C++. No VCL, no MFC, pure C++ only. Прикладные библиотеки и компоненты для C или C++ и тому подобные вопросы. |
Ответить |
|
Опции темы | Опции просмотра |
07.06.2008 18:24 | #1 | ||
Сообщений: 5
+ 3
1/1
– 0
0/0
|
Я программирую в С++Builder v6.0 и у меня есть вопрос, как сделать сумму прописью если допустим в один Edit вставить сумму цифрами, а сумма прописью чтобы появилась во втором Edit и с копейками, например 100,55 (Сто сум пятьдесят пять тийин)
|
||
|
Ответить |
07.06.2008 19:34 | #2 |
Сообщений: 3,327
+ 337
892/590
– 3
31/25
|
Код:
#include <vcl.h> #include <SysUtils.hpp> #include "Num2Str.h" const char *m1[] ={"один ","два ","три ","четыре ","пять ","шесть ","семь ","восемь ","девять "}; const char *f1[] ={"одна ","две ","три ","четыре ","пять ","шесть ","семь ","восемь ","девять "}; const char *n10[] ={"десять ","двадцать ","тридцать ","сорок ","пятьдесят ","шестьдесят ", "семьдесят ","восемьдесят ","девяносто "}; const char *first10[] ={"одиннадцать ","двенадцать ","тринадцать ","четырнадцать ","пятнадцать ", "шестнадцать ","семнадцать ","восемнадцать ","девятнадцать "}; const char *n100[] = {"сто ","двести ","триста ", "четыреста ","пятьсот ","шестьсот ","семьсот ", "восемьсот ","девятьсот "}; const char *kop[] = {"тийин","тийин","тийин"}; const char *rub[] = {"сум ","сум ","сум "}; const char *tsd[] = {"тысяча ","тысячи ","тысяч "}; const char *mln[] = {"миллион ","миллиона ","миллионов "}; const char *mrd[] = {"миллиapд ","миллиаpдa","миллиapдoв "}; const char *cnt[] = {"тысяча ","тысячи ","тысяч "}; const char *cent[] = {"цент США","цента США","центов США"}; const char *doll[] = {"доллар ","доллара ","долларов "}; AnsiString Triada(unsigned int I, unsigned int n, bool k,bool usd) { unsigned int a,gender,sfx; AnsiString Result = ""; sfx=3; if(n==2) gender = 0; else gender = 1; a = I / 100; if (a > 0) { Result += n100[a-1]; I -= a*100; } if (I>19) { a = I / 10; if (a>0) { Result += n10[a-1]; I -= a*10; if (I>0) { if (k) gender = 0; if (gender==1) Result += m1[I-1]; else Result += f1[I-1]; switch(I) { case 1: sfx=1; break; case 2: case 3: case 4: sfx=2; break; case 5: case 6: case 7: case 8: case 9: sfx=3;break; } } } } else { switch(I) { case 1: if (k) gender=0; if (gender==1) Result += m1[I-1]; else Result +=f1[I-1] ; sfx=1; break; case 2: case 3: case 4: if (k) gender = 0; if (gender==1) Result += m1[I-1]; else Result += f1[I-1]; sfx=2; break; case 5: case 6: case 7: case 8: case 9: if (k) gender=0; if (gender==1) Result += m1[I-1]; else Result += f1[I-1]; sfx=3; break; case 10: Result += n10[0]; sfx=3; break; case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: Result += first10[I-11]; sfx=3; break;; } } switch(n) { case 1: if (!k) { if (usd) Result += doll[sfx-1]; else Result += rub[sfx-1]; } else { if (usd) Result += cent[sfx-1]; else Result +=kop[sfx-1]; } break; case 2: if (!k) Result += tsd[sfx-1]; else { if (usd) Result += cent[sfx-1]; else Result +=kop[sfx-1]; } break; case 3: if (!k) Result += mln[sfx-1]; else { if (usd) Result += cent[sfx-1]; else Result += kop[sfx-1]; } break; case 4: if (!k) Result += mrd[sfx-1]; else { if (usd) Result += cent[sfx-1]; else Result += kop[sfx-1]; } break; } return Result; } AnsiString TriadaK(unsigned int I, bool kpk, bool usd) { AnsiString Result; unsigned int sfx,H; if (kpk) { Result = ""; sfx=3; H=(I % 10); switch(H) { case 1: sfx=1; break; case 2: case 3: case 4: sfx=2; break; } if ((I >= 11) && (I <= 19)) sfx=3; if (usd) { if (I<10) Result = "0"+IntToStr(I)+" "+cent[sfx-1]; else Result = IntToStr(I)+" "+cent[sfx-1]; } else { if (I<10) Result ="0"+IntToStr(I)+" "+kop[sfx-1]; else Result=IntToStr(I)+" "+kop[sfx-1]; } } else { if (I==0) { if (usd) Result = "00 центов США"; else Result = "00 тийин"; } else Result = Triada(I,1,true,usd); } return Result; } AnsiString MoneyToString(double S, bool kpk, bool usd) { unsigned int I,H; AnsiString V; AnsiString f,l; double s1; AnsiString Result; V=""; s1=S; H=1000000000; I=S/H; if (I>0) { V = Triada(I,4,false,usd); int tmp = S/H; S -= tmp*H; } H=1000000; I=S/H; if (I>0) { V += Triada(I,3,false,usd); int tmp = S/H; S -= tmp*H; } H=1000; I=S/H; if (I>0) { V += Triada(I,2,false,usd); int tmp = S/H; S -= tmp*H; } H=1; I=(S/H); if (I>0) { V += Triada(I,1,false,usd); int tmp = S/H; S -= tmp*H; } else { if (usd) V += doll[2]; else V += rub[2]; } I = S*100; AnsiString s = S * 100; V += s + " тийин"; if (s1 < 1) V = "ноль " + V; f = AnsiUpperCase(V.SubString(1,1)); l = V.SubString(2,256); V = f+l; Result = V; return Result; } Я незнаю где я это брал, работает ли вообще. Вам домашнее задание проверить :-) Последний раз редактировалось Ruslan Juldashev; 08.06.2008 в 20:47. |
|
Ответить |
"+" от:
|
08.06.2008 20:46 | #5 |
|
[MOD]
Поправлю: не тегом оффтопа, а тегом CODE (там ещё всякие бонусы есть в виде отсутствия смайликов в коде). Сообщение исправил.[/MOD]
__________________
Я за правильное оформление текста на форуме. |
|
Ответить |
"+" от:
|
17.07.2009 22:22 | #8 |
eXUnity TEAM
|
ААА!! Кассовые штучки пишем? У меня на php есть рабочий скрипток. (везде продаётся за 25 wmz) Если вдруг кому нужно, обращайтесь, обменяю на чтонибудь интересное. )
__________________
[eXUnity TEAM] We are advanced enthusiasts. |
|
Ответить |
|