Member 13815639 Ответов: 1

Что не так с моим кодом при преобразовании чисел 11-19 в слова? Там написано "десять" для номера Иви с 11-19.


var iWords = ['Zero', ' One', ' Two', ' Three', ' Four', ' Five', ' Six', ' Seven', ' Eight', ' Nine'];
	var ePlace = ['Ten', ' Eleven', ' Twelve', ' Thirteen', ' Fourteen', ' Fifteen', ' Sixteen', ' Seventeen', ' Eighteen', ' Nineteen'];
	var tensPlace = ['', ' Ten', ' Twenty', ' Thirty', ' Forty', ' Fifty', ' Sixty', ' Seventy', ' Eighty', ' Ninety'];
	var inWords = [];
	 
	var numReversed, inWords, actnumber, i, j;
	 
	function tensComplication() {
		'use strict';
		if (actnumber[i] === 0) {
			inWords[j] = '';
		} else if (actnumber[i] === 1) {
			inWords[j] = ePlace[actnumber[i - 1]];
		} else {
			inWords[j] = tensPlace[actnumber[i]];
		}
	}
	 
	function testSkill() {
		'use strict';
		var junkVal = document.getElementById('rupees').value;
		junkVal = Math.floor(junkVal);
		var obStr = junkVal.toString();
		numReversed = obStr.split('');
		actnumber = numReversed.reverse();
	 
		if (Number(junkVal) >= 0) {
			//do nothing
		} else {
			window.alert('wrong Number cannot be converted');
			return false;
		}
		if (Number(junkVal) === 0) {
			document.getElementById('container').innerHTML = obStr + '' + 'Rupees Zero Only';
			return false;
		}
		if (actnumber.length > 9) {
			window.alert('Oops!!!! the Number is too big to covertes');
			return false;
		}
	 
	 
	 
		var iWordsLength = numReversed.length;
		var finalWord = '';
		j = 0;
		for (i = 0; i < iWordsLength; i++) {
			switch (i) {
				case 0:
					if (actnumber[i] === '0' || actnumber[i + 1] === '1') {
						inWords[j] = '';
					} else {
						inWords[j] = iWords[actnumber[i]];
					}
					inWords[j] = inWords[j] + ' Only';
					break;
				case 1:
					tensComplication();
					break;
				case 2:
					if (actnumber[i] === '0') {
						inWords[j] = '';
					} else if (actnumber[i - 1] !== '0' && actnumber[i - 2] !== '0') {
						inWords[j] = iWords[actnumber[i]] + ' Hundred and';
					} else {
						inWords[j] = iWords[actnumber[i]] + ' Hundred';
					}
					break;
				case 3:
					if (actnumber[i] === '0' || actnumber[i + 1] === '1') {
						inWords[j] = '';
					} else {
						inWords[j] = iWords[actnumber[i]];
					}
					if (actnumber[i + 1] !== '0' || actnumber[i] > '0') {
						inWords[j] = inWords[j] + ' Thousand';
					}
					break;
				case 4:
					tensComplication();
					break;
				case 5:
					if (actnumber[i] === '0' || actnumber[i + 1] === '1') {
						inWords[j] = '';
					} else {
						inWords[j] = iWords[actnumber[i]];
					}
					if (actnumber[i + 1] !== '0' || actnumber[i] > '0') {
						inWords[j] = inWords[j] + ' Lakh';
					}
					break;
				case 6:
					tensComplication();
					break;
				case 7:
					if (actnumber[i] === '0' || actnumber[i + 1] === '1') {
						inWords[j] = '';
					} else {
						inWords[j] = iWords[actnumber[i]];
					}
					inWords[j] = inWords[j] + ' Crore';
					break;
				case 8:
					tensComplication();
					break;
				default:
					break;
			}
			j++;
		}
	 
	 
		inWords.reverse();
		for (i = 0; i < inWords.length; i++) {
			finalWord += inWords[i];
		}
		document.getElementById('container').innerHTML = obStr + '  ' + finalWord;
	}
	
	
	
	
	
	 
	<div id="container"></div>


Что я уже пробовал:

Я пытался изменить код по-разному, но застрял. Нужна помощь плзз.

1 Ответов

Рейтинг:
2

Patrice T

Прочтите здесь лекцию: Задача кодирования: преобразование целого числа в предложение.[^]

Цитата:
Я пытался изменить код по-разному, но застрял. Нужна помощь плзз.

Не пытайтесь вносить случайные изменения, используйте отладчик, чтобы увидеть, что делает ваш код, понять, где он идет не так, а затем сделать соответствующие исправления.
-----
Ваш код ведет себя не так, как вы ожидаете, и вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что вы должны делать, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
Отладчик - Википедия, свободная энциклопедия[^]
Отладка JavaScript[^]
Хром Инструменты Разработчика  |  Сеть  |  Разработчики Google[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.

вторичный эффект, использование отладчика улучшит вашу кривую обучения.

PS: несколько комментариев о том, что такое переменные и как работает код, тоже хорошая привычка. Вы полностью поймете причину, когда вернетесь, чтобы внести изменения в свой код через 6 месяцев или год.


CPallini

Просто из любопытства: в чем причина всех этих ссылок на Python?

Patrice T

Моя ошибка: неправильные ссылки.

Member 13815639

хорошо, tnx, я так и сделаю.