Loading...
+ Нов въпрос
galina777 avatar galina777 4 Точки

Може ли някой да ми предложи решение с JavaScript на задача Travelling от упражненията с Nested Loops.

Здравейте мили хора, решавам задачи от последния курс Programming Basics с JavaScript, но не мога да се справя с една от задачите с вложени while цикли. Ако някой има решение на задача Travelling от упражненията с Nested Loops, ще съм благодарна. Във форума има решения с C#, но не и на JavaScript.

Ето и задачата: Ани обича да пътува и иска тази година да посети няколко различни дестинации. Като си избере дестинация, ще прецени колко пари ще й трябват за да отиде до там и ще започне да спестява. Когато е спестила достатъчно, ще може да пътува.От конзолата всеки път ще се четат първо дестинацията и минималния бюджет, който ще е нужен за пътуването .След това ще се четат няколко суми, които Ани спестява като работи и когато успее да събере достатъчно за пътуването, ще заминава, като на конзолата трябва да се изпише:

 "Going to {дестинацията}!"

Когато е посетила всички дестинации, които иска, вместо дестинация ще въведе "End" и програмата ще приключи.

Вход

Изход

Greece

1000

200

200

300

100

150

240

Spain

1200

300

500

193

423

End

Going to Greece!

Going to Spain!

Тагове:
0
Programming Basics
kr056 avatar kr056 64 Точки

Стигнали ли сте до някъде или не сте опитвали въобще да я решите?

Ако сте написали някакъв код може да го качите в pastebin.com,така ще е по-лесно да се помогне.

0
25/11/2018 13:48:38
galina777 avatar galina777 4 Точки

https://pastebin.com/sYqRr1Lb

Стигам до тук и не мога да завъртя втората част от входа, която започва с 'Spain', 1200, 300, 500, 193, 423, 'End'.

0
TeodorStefanovPld avatar TeodorStefanovPld 1275 Точки

currentCommande = Number(args[i]); ей така като си четеш командата никога няма да хванеш че следващото е Spain и защото Js нали е хубав език и не му пука че му подаваш стринг сигурно ти връща 0 на тоя number вместо Spain. A  и не виждам никъде да нулираш сумата след като ти дадат нова дестинация и минималния budget..Ти хардкодваш 2 стойности и после въртиш върху масива  не става така.

  currentCommande = Number(args[i]); еи това бих го проверявал дали случайно не връща null https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN примерно с nan метода и ако е nan да си кажеш аха нова дестинация дай да презапиша сумата и дестинацията

или пък ако е End да взема да спра цикъла.

0
25/11/2018 19:54:36
galina777 avatar galina777 4 Точки

Напротив, връща ми Spain, ама не продължава напред. Просто не знам как да го направя така, че да продължи да върти и другите стойности на масива, тъй като Spain е string и не знам как да нулирам. В курса подобна задача не е решавана, за да заимствам и реално не знам как да го направя. Точно поради тази причина реших да пиша тук във форума, та да се науча от по-знаещите от мен. Благодаря, че се отзовахте. Ще се радвам, ако някой ми покаже примерен код.

0
sisis003 avatar sisis003 64 Точки

Здравей, ето с това решение ми дава 100/100:

 

function travelling(input) {

let destinationOrEnd = input[0]

let budget = Number(input[1])

let savings = 0

let index = 1

 

while (destinationOrEnd !== 'End') {

index++

 

while (savings < budget) {

savings += Number(input[index])

index++

}

 

console.log(`Going to ${destinationOrEnd}!`)

destinationOrEnd = input[index++]

budget = Number(input[index])

savings = 0

}

}

travelling(['France', 2000, 300, 300, 200, 400, 190, 258, 360, 'Portugal', 1450, 400, 400, 200, 300, 300, 'Egypt', 1900, 1000, 280, 300, 500, 'End'])

0
galina777 avatar galina777 4 Точки

Много благодаря. :))))

1
VladimirKenarov avatar VladimirKenarov 0 Точки

Перфектен код! Много си  блъсках главата. Благодаря!

0
sisis003 avatar sisis003 64 Точки

Ето тук не е нужно да проверяваш дали събраната сумата е по-голяма или равна на необходимата, тъй като когато това стане, цикълът сам ще се прекъсне.

while(sum <= minBudjet){

            sum+=currentCommande;

                if(sum >= minBudjet){

                console.log(`Going to ${destination}! `);

                }

           i++;

           currentCommande = Number(args[i]);

}

 

0
gkarapeev avatar gkarapeev 4 Точки

Божкееее, ЗАЩО Judge иска спестяванията да се НУЛИРАТ след всяка платена екскурзия, а не просто да се ИЗВАДИ цената от спестяванията.

Тъпо. :D Никъде не го пише изрично в условието, затова приемам по презумпция, чр парите работят по нормалния начин. Аз като си купувам вафла от магазина, не си изхвърлям всичките пари от портфейла. :D :D

0
badsector avatar badsector 18 Точки

Работещ код :

function travelling (input) {

let destination = input.shift();

while (destination != "End") {

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

let savedMoney = 0;

while (savedMoney < price) {

savedMoney += Number(input.shift());

}

console.log(`Going to ${destination}!`);

destination = input.shift();

}

}

Някой може ли да ми каже защо според Judge това : "savedMoney += Number(input.shift());" и това "savedMoney += (input.shift());" са различни, а според Visual Studio Code няма разлика.

0
knoteva avatar knoteva 1080 Точки

Здравей,

Защото импутът, който дава джъдж е стринг.

0
badsector avatar badsector 18 Точки

Ясно, благодаря!

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