Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.02.2009, 21:44   #1
china
Новичок
Джуниор
 
Регистрация: 12.02.2009
Сообщений: 2
Смех Помощь нужна!!!

Есть такой язык программирования Delphi.
Нужно создать программу каторая будет По введенной цифре выдать на экран ее словесное обозначение.

помогите плиз...
china вне форума
Старый 12.02.2009, 21:48   #2
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Сумма прописью- модифицируй под себя delphiworld



Код:
unit Numinwrd;

interface
function sMoneyInWords(Nin: currency): string; export;
function szMoneyInWords(Nin: currency): PChar; export;

{ Денежная сумма Nin в рублях и копейках прописью
1997, в.2.1, by О.В.Болдырев}

implementation
uses SysUtils, Dialogs, Math;

type

  tri = string[4];
  mood = 1..2;
  gender = (m, f);
  uns = array[0..9] of string[7];
  tns = array[0..9] of string[13];
  decs = array[0..9] of string[12];
  huns = array[0..9] of string[10];
  nums = array[0..4] of string[8];
  money = array[1..2] of string[5];
  endings = array[gender, mood, 1..3] of tri; {окончания числительных и денег}

const

  units: uns = ('', 'один ', 'два ', 'три ', 'четыре ', 'пять ',
    'шесть ', 'семь ', 'восемь ', 'девять ');
  unitsf: uns = ('', 'одна ', 'две ', 'три ', 'четыре ', 'пять ',
    'шесть ', 'семь ', 'восемь ', 'девять ');
  teens: tns = ('десять ', 'одиннадцать ', 'двенадцать ', 'тринадцать ',
    'четырнадцать ', 'пятнадцать ', 'шестнадцать ',
    'семнадцать ', 'восемнадцать ', 'девятнадцать ');
  decades: decs = ('', 'десять ', 'двадцать ', 'тридцать ', 'сорок ',
    'пятьдесят ', 'шестьдесят ', 'семьдесят ', 'восемьдесят ',
    'девяносто ');
  hundreds: huns = ('', 'сто ', 'двести ', 'триста ', 'четыреста ',
    'пятьсот ', 'шестьсот ', 'семьсот ', 'восемьсот ',
    'девятьсот ');
  numericals: nums = ('', 'тысяч', 'миллион', 'миллиард', 'триллион');
  RusMon: money = ('рубл', 'копе');
  ends: endings = ((('', 'а', 'ов'), ('ь', 'я', 'ей')),
    (('а', 'и', ''), ('йка', 'йки', 'ек')));
threadvar

  str: string;

function EndingIndex(Arg: integer): integer;
begin

  if ((Arg div 10) mod 10) <> 1 then
    case (Arg mod 10) of
      1: Result := 1;
      2..4: Result := 2;
    else
      Result := 3;
    end
  else
    Result := 3;
end;

function sMoneyInWords(Nin: currency): string;
  { Число Nin прописью, как функция }
var
  //  str: string;

  g: gender; //род
  Nr: comp; {целая часть числа}
  Fr: integer; {дробная часть числа}
  i, iTri, Order: longint; {триада}

  procedure Triad;
  var
    iTri2: integer;
    un, de, ce: byte; //единицы, десятки, сотни

    function GetDigit: byte;
    begin
      Result := iTri2 mod 10;
      iTri2 := iTri2 div 10;
    end;

  begin
    iTri := trunc(Nr / IntPower(1000, i));
    Nr := Nr - int(iTri * IntPower(1000, i));
    iTri2 := iTri;
    if iTri > 0 then
    begin
      un := GetDigit;
      de := GetDigit;
      ce := GetDigit;
      if i = 1 then
        g := f
      else
        g := m; {женского рода только тысяча}

      str := TrimRight(str) + ' ' + Hundreds[ce];
      if de = 1 then
        str := TrimRight(str) + ' ' + Teens[un]
      else
      begin
        str := TrimRight(str) + ' ' + Decades[de];
        case g of
          m: str := TrimRight(str) + ' ' + Units[un];
          f: str := TrimRight(str) + ' ' + UnitsF[un];
        end;
      end;

      if length(numericals[i]) > 1 then
      begin
        str := TrimRight(str) + ' ' + numericals[i];
        str := TrimRight(str) + ends[g, 1, EndingIndex(iTri)];
      end;
    end; //triad is 0 ?

    if i = 0 then
      Exit;
    Dec(i);
    Triad;
  end;

begin

  str := '';
  Nr := int(Nin);
  Fr := round(Nin * 100 + 0.00000001) mod 100;
  if Nr > 0 then
    Order := trunc(Log10(Nr) / 3)
  else
  begin
    str := 'ноль';
    Order := 0
  end;
  if Order > High(numericals) then
    raise Exception.Create('Слишком большое число для суммы прописью');
  i := Order;
  Triad;
  str :=
    Format('%s %s%s %.2d %s%s', [Trim(str), RusMon[1], ends[m, 2,
      EndingIndex(iTri)],
    Fr, RusMon[2], ends[f, 2, EndingIndex(Fr)]]);
  str[1] := (ANSIUpperCase(copy(str, 1, 1)))[1];
  str[Length(str) + 1] := #0;
  Result := str;
end;

function szMoneyInWords(Nin: currency): PChar;
begin

  sMoneyInWords(Nin);
  Result := @(str[1]);
end;

end.
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума
Старый 12.02.2009, 21:49   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Создаём массив:
const Nums: array[0..9] = ('Ноль', 'Один', ... ,'Девять');
Если в переменной N содержится цифра, то её словесное представление: Nums[N].

P.S.
Цитата:
Есть такой язык программирования Delphi.
Delphi - среда разработки, а не язык, язык Object Pascal.

P.P.S. Если Вам нужно выводить не цифру, а число, то несколько сложнее, но суть та же (придётся разбирать число на цифры).

P.P.P.S. Немного опоздал
Arigato вне форума
Старый 12.02.2009, 21:52   #4
china
Новичок
Джуниор
 
Регистрация: 12.02.2009
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Создаём массив:
const Nums: array[0..9] = ('Ноль', 'Один', ... ,'Девять');
Если в переменной N содержится цифра, то её словесное представление: Nums[N].

P.S.
Delphi - среда разработки, а не язык, язык Object Pascal.

P.P.S. Если Вам нужно выводить не цифру, а число, то несколько сложнее, но суть та же (придётся разбирать число на цифры).

P.P.P.S. Немного опоздал
ОГРОМНОЕ СПАСИБО я на парах спал))) препод мучает
china вне форума
Старый 12.02.2009, 21:56   #5
Randomize
 
Аватар для Randomize
 
Регистрация: 09.10.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Delphi - среда разработки, а не язык, язык Object Pascal.
Официально с выходом среды разработки delphi7 этот язык называетса Delphi
Люди деляться на 10 типа: тех кто понимают бинарный код и и остальных...
Randomize вне форума
Старый 12.02.2009, 22:11   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Официально с выходом среды разработки delphi7 этот язык называетса Delphi
Этот вопрос спорный. Если Борланд сказали, что теперь язык ObjectPascal называется Делфи, то это ещё не значит, что есть язык Делфи. Тогда вопрос: чем отличается язык Делфи от ObjectPascal? Приведите сотню отличий (рас уж это разные языки).
А с таким подходом, я могу написать свой компилятор ObjectPascal и назвать его языком Arigato. Вы согласитесь со мной?
Точно так же, есть компилятор FreePascal, но нет языка FreePascal, т.к. язык так же ObjectPascal.
Arigato вне форума
Старый 12.02.2009, 22:19   #7
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Название.
Закрыто.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь!!)) ТРОЯН=) Паскаль, Turbo Pascal, PascalABC.NET 2 29.12.2008 21:42
Нужна помощь! dsp Общие вопросы C/C++ 3 11.11.2008 12:44
Нужна помощь..... b00s Общие вопросы Delphi 6 18.02.2008 15:24
Нужна помощь Worms Общие вопросы Delphi 2 21.01.2008 11:20