Моё меню Общее меню Пользователи Правила форума Все прочитано
Вернуться   uForum.uz > ИКТ и телеком > IT-индустрия > Софт > Программирование > C/C++, Прикладные вопросы
Знаете ли Вы, что ...
...нарушения правил форума наказываются. Старайтесь их не нарушать.
<< Предыдущий совет - Случайный совет - Следующий совет >>

C/C++, Прикладные вопросы Программирование на C++. No VCL, no MFC, pure C++ only. Прикладные библиотеки и компоненты для C или C++ и тому подобные вопросы.


Ответить

 
Опции темы Опции просмотра
Старый 07.06.2008 18:24   #1  
Аватар для Victor
Оффлайн
Сообщений: 5
+ 3  1/1
– 0  0/0

Uzbekistan
Сумма прописью

Я программирую в С++Builder v6.0 и у меня есть вопрос, как сделать сумму прописью если допустим в один Edit вставить сумму цифрами, а сумма прописью чтобы появилась во втором Edit и с копейками, например 100,55 (Сто сум пятьдесят пять тийин)
Ответить 
Старый 07.06.2008 19:34   #2  
Аватар для shumbola
Оффлайн
Сообщений: 3,327
+ 337  892/590
– 3  31/25

Uzbekistan
Код:
#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.
Ответить 
"+" от:
Старый 07.06.2008 22:39   #3  
Real ID Group uParty Member Ultimate
Аватар для Djalolatdin Rakhimov
Оффлайн
AKA:dj
Сообщений: 23,604
+ 8,711  10,751/5,416
– 62  55/49

UzbekistanОтправить сообщение для Djalolatdin Rakhimov с помощью Skype™Аккаунт на Twitter
Цитата:
Сообщение от shumbola Посмотреть сообщение
Я незнаю где я это брал, работает ли вообще.
[MOD]Скрывайте листинги и объемные копи-пейсты тегом оффтопа[/MOD]
Ответить 
Старый 07.06.2008 23:26   #4  
Аватар для shumbola
Оффлайн
Сообщений: 3,327
+ 337  892/590
– 3  31/25

Uzbekistan
Цитата:
Сообщение от Djalolatdin Rakhimov Посмотреть сообщение
Цитата:
Сообщение от shumbola Посмотреть сообщение
Я незнаю где я это брал, работает ли вообще.
[MOD]Скрывайте листинги и объемные копи-пейсты тегом оффтопа[/MOD]
Хмм...уже не могу редактировать. :-(
Ответить 
Старый 08.06.2008 20:46   #5  
Real ID Group uParty Member
Аватар для Ruslan Juldashev
Оффлайн
Веб-разработчик
AKA:monitoringe
Сообщений: 3,550
+ 664  1,588/953
– 8  3/2

UzbekistanОтправить сообщение для Ruslan Juldashev с помощью Skype™LiveJournalМой КругАккаунт на TwitterМой мир
Цитата:
Сообщение от Djalolatdin Rakhimov Посмотреть сообщение
Скрывайте листинги и объемные копи-пейсты тегом оффтопа
[MOD]
Поправлю: не тегом оффтопа, а тегом CODE (там ещё всякие бонусы есть в виде отсутствия смайликов в коде). Сообщение исправил.[/MOD]
__________________
Я за правильное оформление текста на форуме.
Ответить 
Старый 06.07.2009 21:28   #6  
Аватар для Ubaydullaev Adahamjon
Оффлайн
telecom
admin
Сообщений: 1
+ 0  0/0
– 0  0/0

Uzbekistan
Post Компонент C++

Всем приветь…
уменья есть компонент по Сумма прописью (С++ 5)
Вложения
Тип файла: rar Saysum.rar (2.7 Кб, 17 просмотров)

Последний раз редактировалось Ubaydullaev Adahamjon; 06.07.2009 в 21:35.
Ответить 
Старый 07.07.2009 11:59   #7  
uParty Member Known ID Group
Аватар для DarkUser
Оффлайн
Служу Его Божественной Тени!
Сообщений: 1,671
+ 4,505  1,372/657
– 164  33/27

Uzbekistan
Оффтоп:
Цитата:
Сообщение от Ubaydullaev Adahamjon Посмотреть сообщение
уменья есть компонент по Сумма прописью
вот за что я обожаю Delphi/C++Builder, там даже на чихнуть сложить 2+2 компонент найдецца...
__________________
Are you my mommy?
Ответить 
Реклама и уведомления
Старый 17.07.2009 22:22   #8  
Real ID Group uParty Member eXUnity TEAM
Аватар для Сергей Каракишьян
Оффлайн
eXUnity TEAM
Основатель
AKA:MegaCrash
Сообщений: 881
+ 189  335/202
– 5  15/14

UzbekistanОтправить сообщение для Сергей Каракишьян с помощью ICQОтправить сообщение для Сергей Каракишьян с помощью Skype™Мой мир
Цитата:
Сообщение от Victor Посмотреть сообщение
Я программирую в С++Builder v6.0 и у меня есть вопрос, как сделать сумму прописью если допустим в один Edit вставить сумму цифрами, а сумма прописью чтобы появилась во втором Edit и с копейками, например 100,55 (Сто сум пятьдесят пять тийин)
ААА!! Кассовые штучки пишем? У меня на php есть рабочий скрипток. (везде продаётся за 25 wmz) Если вдруг кому нужно, обращайтесь, обменяю на чтонибудь интересное. )
Ответить 
Ответить
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Advertisement System V2.5 By Branden
OOO «Единый интегратор UZINFOCOM»


Новые 24 часа Кто на форуме Новички Поиск Кабинет Все прочитано Вверх