Loading...
Achev avatar Achev 53 Точки

[Exam Problems] JavaScript Basics - Prices Trends - проблем със задачата

Здравейте, искам да попитам защо с този код ми дава само 70/100 точки, не разбирам къде точно ми е грешката. Също така искам да съобщя, че проверката на тази задача в Judge системата е развалена (ще видите промяната и в моя код). Накрая затварящия таг по принцип е </td></tr>, но прави проверка с </td></td>. Дори авторскоро решение дава 0/100 точки.  Става въпрос за 1-ва задача от теста на 29 юли. Благодаря предварително. :)

3
JavaScript Fundamentals
a.angelov avatar a.angelov 1316 Точки

Може да пробваш първо сам да намериш причината като погледнеш и пробваш тестовете, на които ти дава грешка в judge. Предполагам тях знаеш къде да намериш. smile

Ако не успееш ще търсим/търся проблема.

2
Achev avatar Achev 53 Точки

Има ли начин да погледна скритите тестове какви са ? Не знаех. sealed

0
a.angelov avatar a.angelov 1316 Точки

Разбира се - след като минат изпитите скритите тестове вече са публични - качват се заедно с условията на задачите в съответния курс.

Ето линк да си ги изтеглиш:

 https://softuni.bg/trainings/coursesinstances/details/4

 

2
19/11/2014 17:07:26
Achev avatar Achev 53 Точки

Супер, много ти благодаря! 

0
RoYaL avatar RoYaL Trainer 6849 Точки

Аз по тестовете не мога да се ориентирам нещо. С предварително вкарване на невалидна стойност за първата цена и след това проверки дали не е невалидна текущата или съответно надолу по flow-а равна, по-малка или по-голяма изкарвам 100. Като гледам обаче входните данни на тестовете, които ми гърмят без такъв такова присвояване - няма невалидни стойности. Т.е. не мога по нормалния начин по време на цикъла да проверя за празна стойност и да continue. Обаче ми изкарва, че 5 > 342.33? Кажи, ако си си намерил грешката :)

Нещо изпуших от толкова джаваскрипт. Гледам авторското решение, пуснал съм console.log на prevPrice и priceStr. Като пусна входа от 9тия тест виждам, че последните две са 5.00 и 342.33. Като пусна prevPrice > priceStr в console.log - вади false, както си трябва.

С решението на колегата при console.log на числата, отново показва 5.00 и 342.33, само където връща true проверката дали 5.00 > 342.33

 

0
19/11/2014 17:53:51
a.angelov avatar a.angelov 1316 Точки

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

for (var number in numbers) {
numbers[number] = numbers[number].toFixed(2);
}

и съответно числата отново са станали стрингове.

От там вече е ясна работата - 13.00 е по-малко от 2.25 лексикографски:

<tr><td>2.25</td><td><img src="up.png"/></td></td>
<tr><td>13.00</td><td><img src="down.png"/></td></td>

 

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

2
19/11/2014 19:47:46
salih1f1 avatar salih1f1 188 Точки

Има един доста удобен инструмент който много бързо ме оринтира къде правя грешки в джъджа - DIFF CHECKER. А сега по същество. Аз също имам такъв проблем. Още от началото си парснах всичко до float, но с огромно учудване разбрах по късно че не работи. Неразбирам защо, след като изрично съм го парснал (или поне така си мисля). А и в интерес на истината има доста хора с по 70 точки. Това е моят код.

П.П. В задачата има и друга грешка в редовете. трябва да е <tr>..</tr> а не <tr>..</td>

3
a.angelov avatar a.angelov 1316 Точки

Салих,

твоята грешка е същата:

num1 = parseFloat(num1).toFixed(2);
num2 = parseFloat(num2).toFixed(2);

с този код ти първо парсваш числото към float и веднага след това го обръщаш закръглено до стринг. След това при сравнението, вече сравняваш стрингове лексикографски.

Ако промениш кода така /малко тъпо изглежда, но работи, т.е. парсваш, закръгляш и пак парсваш към float/:

num1 = parseFloat(parseFloat(num1).toFixed(2));
num2 = parseFloat(parseFloat(num2).toFixed(2));

ще ти даде 100 точки smile

 

ПС. А иначе diff checker-a е доста полезен при сравнение на голям обем output, в който трудно може да намериш разликите с просто гледане.

3
20/11/2014 00:00:13
salih1f1 avatar salih1f1 188 Точки

Не се бях замислил но и не се учудвам, все пак говорим за JavaScript smile. Искренни благодарности и успех на изпита. 

0
a.angelov avatar a.angelov 1316 Точки

Салих, снощи пропуснах да ти кажа, но още един съвет - слагай точка и запетая в края на кода :)

Успех и на теб на изпита!

2
20/11/2014 11:07:04
RoYaL avatar RoYaL Trainer 6849 Точки

@ a.angelov адмирации :) грам не ми мина през акъла, че ги обръща отново към стрингове

0
a.angelov avatar a.angelov 1316 Точки

RoYaL - да не ти показвам скрийншот от judge да видиш колко проби/грешки ми трябваха при решаване на пъвите няколко задачи от изпитите, докато схвана, че работя с грешен тип данни smile 

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