Другие языки программирования и технологии

Задача на массивы. Программирование

Дано число от -999 до 999. Вывести это число прописью (1 = один, -12 = минус двенадцать, 34 = тридцать четыре, 751 = семьсот пятьдесят один и т. д.) с помощью массива и индексов массива.
1. Объявляете массивы констант для формирования строкового представления числа
const
arr100 : array[0..9] of String = ('','сто','двести','триста','четыреста','пятьсот',
'шестьсот','семьсот','восемьсот','девятьсот');
arr011 : array[0..10] of String = ('','десять','одиннадцать','двенадцать','тринадцать',
'четырнадцать','пятнадцать','шестнадцать','семнадцать',
'восемнадцать','девятнадцать');
arr010 : array[0..9] of String = ('','десять','двадцать','тридцать','сорок','пятьдесят',
'шестьдесят','семьдесят','восемьдесят','девяносто');
arr001 : array[0..9] of String = ('','один','два','три','четыре','пять','шесть','семь','восемь','девять');

2. Входное число в переменной InN. Проверяете знак числа
if InN < 0 then sSign := 'минус ' else sSign := '';
InN := Abs(InN);

3. Находите число единиц и десятков
N01 := InN mod 10;
N10 := (InN div 10) mod 10;

4. Переводите так называемую "триаду" (у вас она одна) в строку и дополняете слева незначащими нулями
Str(InN, InS); {строковое представление числа}
InS := Copy('000', 1, 3 - Length(InS)) + InS;

5. Обрабатываете цифры триады и формируете результат с учетом знака
for i:=1 to 3 do begin
N := Ord(InS[i]) - Ord('0');
case i of
1 : Result := Result + Arr100[N];
2 : if N10 = 1 then Result := Result + Arr011[N01 + 1] { 10..19 }
else Result := Result + Arr010[N] ; {n10 20..90 }
3 : if N10 <> 1 then Result := Result + Arr001[N]; {n011..9}
end;
if Result <> '' then Result := Result + ' ';
end;

if Result = '' then Result := 'ноль';
NumToStr := sSign + Result;

Примерно так.
Юрий Максимов
Юрий Максимов
59 627
Лучший ответ
В упрощенном виде на примере чисел в диапазоне от 21 до 99, исключая числа заканчивающихся на ноль (ибо с 11, 12, 13, 20, 30 и т. д придется возиться чуть дольше)
___
function propis () {
one = ["один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять","ноль"];
two = ["двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"];
n = prompt('Enter number from 21 to 99 with the exception of numbers ending in zero');
if (n < 21 || n > 99) {alert('Не принимается');
return false;};
n= n.toString();
if (n[1] == '0') {alert('Не принимается');
return false;
};
for (var i = 0; i < 10; i++) {
if(n[0] == i) {f = two[i - 2]}
if(n[1] == i) {s = one[i - 1]}
};
alert(f + ' ' + s);
}
propis();
BD
Blade Dancer
50 278