В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
ТОХА2287
ТОХА2287
21.04.2021 23:45 •  Информатика

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

Показать ответ
Ответ:
ЕгорМаксимов
ЕгорМаксимов
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.

Объяснение:

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

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота