Напишите процедуру, которая выводит переданное ей число прописью. Например, 21 -
Напишите процедуру, которая выводит переданное ей число прописью. К примеру, 21 - 20 один
Язык Паскаль
2 ответа
Jemilija Krivosheina
procedure p(x:integer; var st:string);
type
name = array[0..9] of String[50];
const
s1 : name = (' ноль ',' один ',' два ',' три ',' четыре ',' пять ',' 6 ',' семь ',' восемь ',' девять ');
s2: name = (' ',' 10 ',' 20 ',' 30 ',' 40 ',' 50 ',' шестьдесят ',' 70 ',' восемьдесят ',' девяносто ');
s3: name = (' ',' 100 ',' двести ',' триста ',' четыреста ',' пятьсот ',' 600 ',' семьсот ',' восемьсот ',' девятьсот ');
s4 : name = (' ',' одиннадцать ',' двенадцать ',' тринадцать ',' четырнадцать ',' пятнадцать ',' шестнадцать ',' семнадцать ',' восемнадцать ',' девятнадцать ');
var
s,d,e : Integer;
begin
s:= x div 100; x:=x mod 100;
st:=s3[s];
d:= x div 10; e:=x mod 10;
if (d=1) and (elt;gt;0) then st:=st+s4[e]
else st:=st+s2[d]+s1[e];
end;
var x:integer; st:string;
Begin
Write('Введите число [0..999] :');
Readln(x);
p(x,st);
writeln(st);
End.
Пример:
Введите число [0..999] : 714
семьсот четырнадцать
type
name = array[0..9] of String[50];
const
s1 : name = (' ноль ',' один ',' два ',' три ',' четыре ',' пять ',' 6 ',' семь ',' восемь ',' девять ');
s2: name = (' ',' 10 ',' 20 ',' 30 ',' 40 ',' 50 ',' шестьдесят ',' 70 ',' восемьдесят ',' девяносто ');
s3: name = (' ',' 100 ',' двести ',' триста ',' четыреста ',' пятьсот ',' 600 ',' семьсот ',' восемьсот ',' девятьсот ');
s4 : name = (' ',' одиннадцать ',' двенадцать ',' тринадцать ',' четырнадцать ',' пятнадцать ',' шестнадцать ',' семнадцать ',' восемнадцать ',' девятнадцать ');
var
s,d,e : Integer;
begin
s:= x div 100; x:=x mod 100;
st:=s3[s];
d:= x div 10; e:=x mod 10;
if (d=1) and (elt;gt;0) then st:=st+s4[e]
else st:=st+s2[d]+s1[e];
end;
var x:integer; st:string;
Begin
Write('Введите число [0..999] :');
Readln(x);
p(x,st);
writeln(st);
End.
Пример:
Введите число [0..999] : 714
семьсот четырнадцать
Zhivetev Kostja
Можно без массивов, пожалуйста? Тема процедур идет до массивов, значит надо как-то без их
Тимур Греджев
Procedure P(A:integer);
Var
B:byte;
S,Z:string;
Begin
if A = 0 then Write('Ноль')
else
Begin
if A lt; 0 then
Begin
Z:='минус ';
A:=-A;
End;
B:=A mod 100;
if B div 10 = 1 then
Case B mod 10 of
0:S:='10';
1:S:='одиннадцать';
2:S:='двенадцать';
3:S:='тринадцать';
4:S:='четырнадцать';
5:S:='пятнадцать';
6:S:='шестнадцать';
7:S:='семнадцать';
8:S:='восемнадцать';
9:S:='девятнадцать';
End
else
Begin
Case B mod 10 of
1:S:='один';
2:S:='два';
3:S:='три';
4:S:='четыре';
5:S:='5';
6:S:='шесть';
7:S:='семь';
8:S:='восемь';
9:S:='девять';
End;
Case B div 10 of
2:S:='20 '+S;
3:S:='30 '+S;
4:S:='40 '+S;
5:S:='50 '+S;
6:S:='шестьдесят '+S;
7:S:='70 '+S;
8:S:='восемьдесят '+S;
9:S:='девяносто '+S;
End;
End;
Case (A div 100) mod 10 of
1:S:='100 '+S;
2:S:='двести '+S;
3:S:='триста '+S;
4:S:='четыреста '+S;
5:S:='500 '+S;
6:S:='600 '+S;
7:S:='семьсот '+S;
8:S:='восеьсот '+S;
9:S:='девятьсот '+S;
End;
WriteLn(Z+S);
End;
End;
Var
A:longint;
Begin
Write('Введите целое число: ');ReadLn(A);
P(A);
End.
Var
B:byte;
S,Z:string;
Begin
if A = 0 then Write('Ноль')
else
Begin
if A lt; 0 then
Begin
Z:='минус ';
A:=-A;
End;
B:=A mod 100;
if B div 10 = 1 then
Case B mod 10 of
0:S:='10';
1:S:='одиннадцать';
2:S:='двенадцать';
3:S:='тринадцать';
4:S:='четырнадцать';
5:S:='пятнадцать';
6:S:='шестнадцать';
7:S:='семнадцать';
8:S:='восемнадцать';
9:S:='девятнадцать';
End
else
Begin
Case B mod 10 of
1:S:='один';
2:S:='два';
3:S:='три';
4:S:='четыре';
5:S:='5';
6:S:='шесть';
7:S:='семь';
8:S:='восемь';
9:S:='девять';
End;
Case B div 10 of
2:S:='20 '+S;
3:S:='30 '+S;
4:S:='40 '+S;
5:S:='50 '+S;
6:S:='шестьдесят '+S;
7:S:='70 '+S;
8:S:='восемьдесят '+S;
9:S:='девяносто '+S;
End;
End;
Case (A div 100) mod 10 of
1:S:='100 '+S;
2:S:='двести '+S;
3:S:='триста '+S;
4:S:='четыреста '+S;
5:S:='500 '+S;
6:S:='600 '+S;
7:S:='семьсот '+S;
8:S:='восеьсот '+S;
9:S:='девятьсот '+S;
End;
WriteLn(Z+S);
End;
End;
Var
A:longint;
Begin
Write('Введите целое число: ');ReadLn(A);
P(A);
End.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов