Главная страницаОбратная связьКарта сайта

Сумма прописью - Способ 6


{------------------------ Деньги прописью ---------------------}

function TextSum(S: double): string;

  function Conv999(M: longint; fm: integer): string;
  const

    c1to9m: array[1..9] of string[6] =
    ("один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь",
      "девять");
    c1to9f: array[1..9] of string[6] =
    ("одна", "две", "три", "четыре", "пять", "шесть", "семь", "восемь",
      "девять");
    c11to19: array[1..9] of string[12] =
    ("одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать",
      "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать");
    c10to90: array[1..9] of string[11] =
    ("десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят",
      "семьдесят", "восемьдесят", "девяносто");
    c100to900: array[1..9] of string[9] =
    ("сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот",
      "восемьсот", "девятьсот");
  var

    s: string;
    i: longint;
  begin

    s := "";
    i := M div 100;
    if i <> 0 then
      s := c100to900[i] + " ";
    M := M mod 100;
    i := M div 10;
    if (M > 10) and (M < 20) then
      s := s + c11to19[M - 10] + " "
    else
    begin
      if i <> 0 then
        s := s + c10to90[i] + " ";
      M := M mod 10;
      if M <> 0 then
        if fm = 0 then
          s := s + c1to9f[M] + " "
        else
          s := s + c1to9m[M] + " ";
    end;
    Conv999 := s;
  end;

  {--------------------------------------------------------------}
var

  i: longint;
  j: longint;
  r: real;
  t: string;

begin

  t := "";

  j := Trunc(S / 1000000000.0);
  r := j;
  r := S - r * 1000000000.0;
  i := Trunc(r);
  if j <> 0 then
  begin
    t := t + Conv999(j, 1) + "миллиард";
    j := j mod 100;
    if (j > 10) and (j < 20) then
      t := t + "ов "
    else
      case j mod 10 of
        0: t := t + "ов ";
        1: t := t + " ";
        2..4: t := t + "а ";
        5..9: t := t + "ов ";
      end;
  end;

  j := i div 1000000;
  if j <> 0 then
  begin
    t := t + Conv999(j, 1) + "миллион";
    j := j mod 100;
    if (j > 10) and (j < 20) then
      t := t + "ов "
    else
      case j mod 10 of
        0: t := t + "ов ";
        1: t := t + " ";
        2..4: t := t + "а ";
        5..9: t := t + "ов ";
      end;
  end;

  i := i mod 1000000;
  j := i div 1000;
  if j <> 0 then
  begin
    t := t + Conv999(j, 0) + "тысяч";
    j := j mod 100;
    if (j > 10) and (j < 20) then
      t := t + " "
    else
      case j mod 10 of
        0: t := t + " ";
        1: t := t + "а ";
        2..4: t := t + "и ";
        5..9: t := t + " ";
      end;
  end;

  i := i mod 1000;
  j := i;
  if j <> 0 then
    t := t + Conv999(j, 1);
  t := t + "руб. ";

  i := Round(Frac(S) * 100.0);
  t := t + Long2Str(i) + " коп.";
  TextSum := t;
end;


Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Сумма прописью - Способ 6", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2024 Дискета.info