Практика программирования (Бейсик, Си, Паскаль)


         

Если две младшие цифры меньше


int digl,dig10,dig100;

if(m==0) return numl[0]; Result[0]=0x0;

if(m<0) /* Учет знака числа */ {

m=-m;

strcpy(Result,"минус ") ; }

diglOO=m/100; /* Выделение сотен */

strcat(Result,num3[diglOO]);
/* Приклеили обозначение сотен */
m=m-100*dig100;
/* Удаление обработанных сотен */
if (m=0) return Result;
/* Если две оставшиеся цифры - нули */
if(m<20) /* Если две младшие цифры меньше 20 */
{

strcat(Result,numl[m]);
return Result; }

diglO=m/10;
/* Выделение десятков, если diglO >=20 */
strcat(Result,num2[diglO-2]);
digl=m % 10;

/* Если в числе присутствуют ненулевые разряды единиц */
if(digl != 0)

strcat(Result,numl[digl]);
return Result; }

Программа 2_11.pas

program nd_10;

{ Формирование словесного описания числа )

uses Crt;

var

n:longint;

function num_to_str(m:longint):string;
{ Преобразование числа в словесное описание }

label ret;

"const

numl :array [0. .19] o£ string= (

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

num2:array [2..9] of string=(

'двадцать ','тридцать ','сорок ','пятьдесят ', 'шестьдесят ','семьдесят ','восемьдесят ','девяносто ');

num3:array [0..9] of string = ('',

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

var

digl,diglO,diglOO: byte;
Result:string;
begin

if m=0 then begin

Result:=numl[0];
goto ret;
end;

Result:='';

if m<0 then { Учет знака числа }
begin

m:=-m;

Result:='минус '; end;

diglOO:=m div 100; { Выделение сотен }

Result:=Result + num3[diglOO];
{ Приклеили обозначение сотен }
m:=m-100*diglOO;
{ Удаление обработанных сотен }
if m=0 then goto ret;
{ Если две оставшиеся цифры - нули }
if m<20 then begin
{ Если две младшие цифры меньше 20 }

Result:=Result+numl [m] ;
goto ret;
end;

Содержание  Назад  Вперед