Как в pascal abc написать программу, которая преобразует word в string. то есть программа в которой мы вводим цифру, а нам слово

Babka2002 Babka2002    3   30.10.2019 11:49    0

Ответы
123qjfj 123qjfj  10.10.2020 10:17

program Num_To_Str;

uses

 SysUtils, Math;

const

 Max000 = 6;               {Кол-во триплетов - 000}

 MaxPosition = 18;         {Кол-во знаков в числе }

function IIF (i: Boolean; s1, s2: Char): Char; overload;

begin

 if i then result := s1

 else result := s2

end;

function IIF (i: Boolean; s1, s2: string ): string; overload;

begin

 if i then result := s1

 else result := s2

end;

function Num000toStr (S: string; Woman: Boolean): string; {Num000toStr возвращает число для триплета}

const

 c100: array ['0'..'9'] of string = ('', 'сто ', 'двести ', 'триста ', 'четыреста ', 'пятьсот ',

   'шестьсот ', 'семьсот ', 'восемьсот '  ,'девятьсот ');

 c10: array ['0'..'9'] of string = ('','десять ','двадцать ','тридцать ','сорок ','пятьдесят ',

   'шестьдесят ','семьдесят ','восемьдесят ','девяносто ');

 c11: array ['0'..'9'] of string = ('','один','две','три','четыр','пят','шест','сем',

   'восем','девят');

 c1: array [False..True, '0'..'9'] of string=(('','один ','два ','три ','четыре ','пять ',

   'шесть ','семь ','восемь ','девять '),

 ('','одна ','две ','три ','четыре ','пять ','шесть ','семь ','восемь ','девять '));

begin{Num000toStr}

 Result := c100 [s[1]] + iif ((s[2] = '1') and (s[3] > '0'), c11 [s[3]] + 'надцать ',

   c10 [s[2]] + c1 [woman, s[3]]);

end;{Num000toStr}

function NumToStr (n: LongInt): string;    {Возвращает число прописью}

const

 c1000: array [0..Max000] of string  = ('', 'тысяч', 'миллион', 'миллиард', 'триллион',

   'квадраллион','квинтиллион');

 c1000w: array [0..Max000] of Boolean = (False, True, False, False, False, False, False);

 w: array [False..True, '0'..'9'] of string [3]= (

 ('ов ', ' ' ,'а ' ,'а ' ,'а ' ,'ов ' ,'ов ' ,'ов ' ,'ов ' ,'ов '),

 (' ' ,'а ', 'и ', 'и ', 'и ', ' ', ' ', ' ', ' ', ' '));

var

 s: string;

 s000: string [3];

 isw, isMinus: Boolean;

 i: Integer;        //Счётчик триплетов

begin

 s := IntToStr (n);

 Result := ''; i := 0;

 isMinus := (s<>'') and (s[1] = '-');

 if isMinus then s := Copy (s, 2, Length (s) - 1);

 while not ((i >= Ceil (Length (s) / 3)) or (i >= Max000)) do begin

   s000 := Copy ('00' + s, Length (s) - i * 3, 3);

   isw := c1000w [i];

   if (i > 0) and (s000 <> '000') then         //тысячи и т.д.

     Result := c1000 [i] + w [Isw,

     iif (s000 [2] = '1', Char ('0'), Char (s000 [3]))

     ] + Result;

   Result := Num000toStr (s000, isw) + Result;

   Inc (i)

 end;

 if Result = '' then Result := 'ноль';

 if isMinus then Result := 'минус ' + Result;

end;{NumToStr}

var

 Num: LongInt;

begin

 Write ('Введите число: ');

 ReadLn (Num);

 WriteLn (NumToStr (Num));

 ReadLn;

end.

Объяснение:

попробуйте эту программу на Паскале, возможно что-то подправить будет нужно

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика