|
|
|
|||||||
| Знаете ли Вы, что ... | |
| ...до того как открыть новую тему, стоит использовать поиск: такая тема уже может существовать. | |
| << Предыдущий совет - Случайный совет - Следующий совет >> | |
| C/C++, Прикладные вопросы Программирование на C++. No VCL, no MFC, pure C++ only. Прикладные библиотеки и компоненты для C или C++ и тому подобные вопросы. |
| Ответить |
|
|
Опции темы | Опции просмотра |
|
|
#1 | ||
|
Сообщений: 5
+ 3
1/1
– 0
0/0
![]() |
Я программирую в С++Builder v6.0 и у меня есть вопрос, как сделать сумму прописью если допустим в один Edit вставить сумму цифрами, а сумма прописью чтобы появилась во втором Edit и с копейками, например 100,55 (Сто сум пятьдесят пять тийин)
|
||
|
|
Ответить |
|
|
#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. |
|
|
Ответить |
|
"+" от:
|
|
|
#5 |
![]() |
[MOD]
Поправлю: не тегом оффтопа, а тегом CODE (там ещё всякие бонусы есть в виде отсутствия смайликов в коде). Сообщение исправил.[/MOD]
__________________
Я за правильное оформление текста на форуме. |
|
|
Ответить |
|
"+" от:
|
|
|
#8 | |
eXUnity TEAM |
Цитата:
У меня на php есть рабочий скрипток. (везде продаётся за 25 wmz) Если вдруг кому нужно, обращайтесь, обменяю на чтонибудь интересное. )
__________________
[eXUnity TEAM] We are advanced enthusiasts. |
|
|
|
Ответить |
|