Показать сообщение отдельно
  #8 (permalink)  
Старый 22.05.2023, 09:49
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,744

Может так
const oneText = ['','один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'];
const elvText = ['десять', 'одиннацать', 'двенадцать','тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать'];
const tanText = ['', '','двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'];
const hunText = ['', 'сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот'];
 
function transform(number){
	let neg = false;
	if (number < 0) {
		neg = true;
		number = - number;
	}
	if (number >=1000) return '';
	if (number === 0) return 'ноль';
	const rez = [];
	if (neg) rez.push ('минус')
	
	const h = (number / 100) | 0;
	number = number % 100;
	const d = (number / 10) | 0;
	const n = number % 10;
	if (h > 0) rez.push (hunText[h])
	if (d === 1) {
		rez.push (elvText[n])
	} else {
		if (d > 0) rez.push (tanText[d])
		if (n > 0) rez.push (oneText[n])
		
	}
	return rez.join(' ');
}

console.log (transform(0));
console.log (transform(5));
console.log (transform(10));
console.log (transform(17));
console.log (transform(30));
console.log (transform(42));
console.log (transform(100));
console.log (transform(214));
console.log (transform(473));
console.log (transform(-100));
console.log (transform(-214));
console.log (transform(-473));

Последний раз редактировалось voraa, 22.05.2023 в 10:10.
Ответить с цитированием