Другие языки программирования и технологии
Задача на массивы. Программирование
Дано число от -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;
Примерно так.
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;
Примерно так.
В упрощенном виде на примере чисел в диапазоне от 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();
___
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();
Интересная задачка
Володя И Такие Бывают
Решил?

Володя И Такие Бывают
https://pastebin.com/Tg0fBn77
Похожие вопросы
- Информатика. Помощь в решении задач по массивам
- C++ задача про массив
- Задача на массивы двумерные помогите доделать на C#,код прикрепляю и задачу
- Задача по массиву в Си++
- Задача на МАССИВЫ Паскаль ОЧЕНЬ СРОЧНО!!!!
- Задачи на массив паскаль, помогите пожалуйста
- задача на массивы. срочно!!! в одномерном массиве А [10] найти кол-во элементов , которые меньше 15 и больше 30
- Стоит следующая задача, нужно освоить программирование
- Программирование задач на языке программирования C++.
- Решение задачи на языке программирования С++.