Программа написания чисел прописью


Алгоритм.

В русском языке:

- каждая десятичная цифра в позиционной записи числа имеет уникальное имя собственное (числительное), которое однозначно определяется местоположением (номером позиции, разрядом) цифры,

- словесное название числа образуется последовательностью слов-числительных в порядке убывания разрядности цифр.

Вывод: для каждой цифры, в числовой записи, существует ровно десять уникальных названий. Эти названия удобно разместить в специальных справочных массивах содержащих ровно по десять символьных (строковых) переменных, причем в качестве индексов использовать числа 0, 1, 2,..,9.

Проводим последовательное, от старших к младшим разрядам, выделение цифр из заданного целого числа, что удобно делать путем операции целочисленного деления (div). Выделенная цифра (вернее целое число из диапазона [0,9]) используется как индекс для соответствующего справочного массива названий этой цифры.

Program propis;

Type T=array[0..9] of string[20]; {Описание структуры переменных для

справочников-названий цифр:

sZ00 – массив с названием сотен, т.е. цифры Z в числе Z00,

sZ0 - массив с названием десятков,

s1Z - массив с названием чисел второго десятка, т.е. 10, 11, 12, ...,19

sZ- массив с названием единиц }

Const sz00: T=('', 'сто', 'двести', 'триста', 'четыреста', 'пятьсот',

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

sz0: T=('', '', 'двадцать', 'тридцать', 'сорок', 'пятьдесят',

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

s1z: T=('', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать',

'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать',

'девятнадцать');

sz: T=('ноль', 'один', 'два', ' три', 'четыре', 'пять'

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

Var N, i, j: integer;

s: string; {строка, в которой будет размещено словесное название числа N }

Begin

N:=852; {N – исходное число, т.е. исходные данные ! }

if (N<0) or (N>999) then {контроль диапазона допустимости исходных данных}

begin Writeln(‘Заданное число вне допустимого диапазона’); Exit end;

j:=N; {создаем j копию числа N}

i:=j div 100; {выделяем i- количество сотен в числе N}

s:=sz00[i]; { внесение в строку S соответствующее цифре i название

из справочного массива }

j:=j-i*100; i:=j div 10; { удаляем из числа сотни и выделяем i-цифру десятков }

if i=1 then {особая ситуация: десяток - один} s:=s+' '+s1z[j-10]

else {количество десятков 0, 2, 3, ...9 }

begin

s:=s+' '+sz0[i]; { добавляем к строке S название десятков }

i:=j-i*10; {удаляем из числа десятки, т.е. остаются i-единицы }

if i<>0 then {если количество единиц значимое то добавляем их название }

s:=s+' '+sz[i];

end;

{особо выделяем ситуацию «чистого нуля!» } if N=0 then s:=sz[0];

writeln(N,'=',s); {печать на экран результата}

End.

Результат на экране: 852=восемьсот пятьдесят два



Дата добавления: 2021-12-14; просмотров: 322;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.