Var m, n: integer; s1, s2, s3: string; ms: array[1..9] of string; md: array[1..9] of string; m1: array[11..19] of string; me: array[1..9] of string; flag: boolean;
Write('Введите целое число от 1 до 1000: '); Readln(m); if (m < 1) or (m > 1000) then Writeln('Шутки шутим?') else if m = 1000 then Writeln('Одна тысяча ' + s3) else begin { сотни } n := m div 100; if n > 0 then begin Write(ms[n]); flag := true end; { десятки } m := m mod 100; if m = 0 then Writeln(' ', s3) else begin if (m > 10) and (m < 20) then begin if flag then Write(' '); Writeln(m1[m], ' ', s3) end else if m > 0 then begin n := m mod 10; m := m div 10; if m > 0 then begin if flag then Write(' ') else flag := true; Write(md[m]) end; if n <> 0 then begin { единицы } if flag then Write(' '); Write(me[n], ' '); case n of 1: Writeln(s1); 2..4: Writeln(s2); else Writeln( s3) end end else Writeln(' ', s3) end end end end.
Тестовое решение: Введите целое число от 1 до 1000: 314 триста четырнадцать рублей
Целая часть от деления: 37 div 2 = 18 18 div 2 = 9 9 div 2 = 4 4 div 2 = 2 2 div 2 = 1 1 div 2 = 0
Остаток от деления: 37 mod 2 = 1 18 mod 2 = 0 9 mod 2 = 1 4 mod 2 = 0 2 mod 2 = 0 1 mod 2 = 0
1) Остаток от деления 37 на записываем в обратном порядке. Получаем число в 2-ой системе счисления: 100101 37 = 100101(2)
2) Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения. 0.375*2 = 0.75 (целая часть 0) 0.75*2 = 1.5 (целая часть 1) 0.5*2 = 1 (целая часть 1) 0*2 = 0 (целая часть 0) Получаем число в 2-ой системе счисления: 0110 0.375 = 0110(2)