Цитата:
Задача: Написать программу которая выводит текст "К ворон".(пример "сто ворон" или "Три тысячи ворон" или "девятьсот двадцать одна тысяча ворон " (выводит словами)). Надо ввести число К от одного до одного миллиона.
День ничего не делал, но сегодня решил таки взяться за.
И вот что получилось. TurboPascal 7.1.
Код:
Uses CRT;
label
Exit;
const
sot : array [1..9] of string =
('CTO','DBECTu','TPuCTO',
'4ETbIPECTO','I79|TbCOT','IIIECTbCOT',
'CEMbCOT','BOCEMbCOT','DEB9|TbCOT');
var
crow : string[7];
k : array [0..6] of string;
xk : array [1..4] of string;
ak : array [1..4] of string;
{============================}
Function get_words(digits: string): string;
const
razrad : array [0..2, 1..9] of string = (
('ODHA','DBE','TPu','4ETbIPE','I79|Tb','IIIECTb','CEMb','BOCEMb','DEB9|Tb'),
('ODuHADUATb','DBEHADUATb','TPuHADUATb',
'4ETbIPHADUATb','I79|THADUATb','IIIECTHADUATb',
'CEMHADUATb','BOCEMHADUATb','DEB9|THADUATb'),
('DEC9|Tb','DBADUATb','TPuDUATb','COPOK','I79|TbDEC9IT','IIIECTbDEC9|T','CEMbDEC9|T','BOCEMbDEC9|T','DEB9IHOCTO'));
var
ch, error : integer;
func_out : string;
x, y : integer;
begin
Val(digits, ch, error);
if (ch<>0) then begin
if ch<10 then
func_out := razrad[0, ch]
else if ch<20 then
func_out := razrad[1, ch-10]
else begin
Val(digits[1], x, error);
Val(digits[2], y, error);
if y<>0 then
func_out := razrad[2, x]+' '+razrad[0, y]
else
func_out := razrad[2, x]
end;
if ch=10 then
func_out := razrad[2, ch-9];
end else
func_out := '';
get_words := func_out;
end;
{============================}
Программа работает, вводите число от 1 до 1000000. Правда нуль и отрицательные не надо вводить
но это ничего, ведь правда?