Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Iskren.1990 avatar Iskren.1990 6 Точки

Cannot read property 'length' of undefined

Може ли предположения :?

 

Cannot read property 'length' of undefined

 

 

 

function solve(input) {

    let budget = Number(input[0]);

    let command = input.shift();

 

    let price = 0;

 

    while (command != `Stop` || budget > 0) {

        for(let i = 0; i < command.length; i++) {

            price = command.charCodeAt(i);

            budget -= price;

        }

        if (budget >= 0) {

            console.log(`Item successfully purchased!`);

            price = 0;

        } else if (budget < 0) {

            console.log(`Not enough money!`);

        }

        command = input.shift();

    }

    if (command === `Stop`) {

        console.log(`Money left: ${budget}`);

    }

}

Тагове:
0
Programming Basics
KhanStan avatar KhanStan 3 Точки

Моето предположение е, че не спираш програмата навреме. Трябва да провериш дали имаш пари за артикула преди да си го закупил, а не след това. Така програмата влиза в един допълнителен цикъл, при който input масива ти остава без елементи (заради shift()), което връща undefined. Също така според мен let budget = Number(input[0]); трябва да е let budget = Number(input.shift());?

0
Iskren.1990 avatar Iskren.1990 6 Точки

Здравей,

 

До колкото разбирам предлагаш в :

        for(let i = 0; i < command.length; i++) {

            price = command.charCodeAt(i);

            budget -= price;

            if (budget <= 0) {

                break;

            }

 

но пак не се получава.

Също така според мен let budget = Number(input[0]); трябва да е let budget = Number(input.shift())

не мисля, че е от значение, но ще пробвам и с него.

0
KhanStan avatar KhanStan 3 Точки

От значение е, защото, ако не използваш .shift() първият command ще ти е числото за бюджета. Ето ти работещ код. Преправих го отчасти.

function solve(input) {

    let budget = Number(input.shift());

    let command = input.shift();
    let price = 0;

    while (budget > 0) {
    	if (command === "Stop") {
        	console.log(`Money left: ${budget}`);
            return;
    	}
        
        for(let i = 0; i < command.length; i++) {
            price += command.charCodeAt(i);
        }
        	if(budget - price < 0) {
            	console.log(`Not enough money!`);
                return;
            } else {
            	budget -= price;
                console.log(`Item successfully purchased!`);
                price = 0;
            }
        command = input.shift();

    }

}

 

0
Iskren.1990 avatar Iskren.1990 6 Точки

Здравей колега, 

Прав си за input[0].

и за допълнителният цикъл,

реално грешката ми е в условието на цикъла. вместо || трябва да е &&

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.