Професионална програма
Loading...
+ Нов въпрос
gartin avatar gartin 73 Точки

[Homework] JavaScript Basics - JavaScript Loops, Arrays, Strings - Problem{2} - Score Modification

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

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

За Input би трябвало да са дадени floating point numbers (аз виждам целочислени типове), които са валидни ако са между 0 и 400. Като Output се иска валидните резултати, намалени с 20% и сортирани възходящо. От примерния I/O при проверка (делим резултата на 0.8 за да върнем намалените 20%) аз получавам следното:

18.4 / 0.8 = 23
53.6 / 0.8 = 67
96 / 0.8 = 120
136 / 0.8 = 170
160 / 0.8 = 200
169.6 / 0.8 = 212
280 / 0.8 = 350
320.8 / 0.8 = 401
336 / 0.8 = 420

 

Аз ли греша някъде?

2
JavaScript Fundamentals 17/03/2015 12:53:32
Samuil.Petrow avatar Samuil.Petrow 1549 Точки

Явно са решили да направят една задача, но в процеса на писане са направили обратната :D

Както казваш - не трябва да е floating point numbers.

P.S: За тези неща принципно има функционалност до линка за материалите :)

0
17/03/2015 11:18:07
gartin avatar gartin 73 Точки

Исках да се уверя, че грешката не е в мен преди да докладвам :)

0
Filkolev avatar Filkolev 4485 Точки

Не мисля, че е точно грешка. Това, че в примера са дадени само цели числа, не значи, че само с такива трябва да работи. Щом е казано да работи с реални по-добре я направи да работи с реални.

Имаш грешка в сметките, това делене на 0.8 не е вярно. Забележи, че получаваш резултат, по-висок от първоначалното число. Трябва да ползваш умножение.

0
gartin avatar gartin 73 Точки

Сметките с деленето са обратната проверка:

23 * 0.8 = 18.4 (по условие)

18.4 / 0.8 = 23 (за проверка)

т.е. в горния ми пост преди деленето са всички числа от поле Output.

0
Bi0GaMe avatar Bi0GaMe Trainer 389 Точки

Оправих проблема по условието на задачата. В момента трябва да е по-ясно. Благодаря за сигнала. Ако все още има нещо неясно кажете.

3
divery avatar divery 8 Точки

Извинявай, но само искам да проверя дали съм в правилна посока... Нали идеята на JS e че нас не ни вълнува какъв тип данни влизат във входа (смисл. целочислени или флотинг-поинт типове) ,зашото js сам си ги разбира.

Ето моето решение за мнение.

0
18/03/2015 13:49:56
TKlasnakov avatar TKlasnakov 28 Точки

x<=400 или x<401, тъй като максималният резултат е 400 :) 

0
divery avatar divery 8 Точки

да, благодаря ;)

 

0
NikolayNK avatar NikolayNK 4 Точки

Хаха тъкмо влизах във форума за да напиша за тази задача, ама си ме изпреварил. sealed sealed

0
manito_17711 avatar manito_17711 43 Точки

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

0
Bi0GaMe avatar Bi0GaMe Trainer 389 Точки

Току що направих промени по домашното отново, тъй като имаше сигнал за грешно условие по 5-та задача. Извинявам се предварително за това, че не съм проверил достатъчно надълбоко условието. Постарах се всички да имат решение, а пренебрегнах условията. Надявам се за вбъдеще да няма такива грешки.

1
TKlasnakov avatar TKlasnakov 28 Точки

А аз исках да попитам дали е грешно това и може ли да създаде някъде грешка. Това ми е кода та идеята ми е 

if (typeof (a[i]) == 'number' ... дали това сравнение може да ми изгърми за проверка на число. Тъй като днес видях за сравнението !NaN. Някой някакви идеи ? 
0
idmitrov avatar idmitrov 55 Точки

Привет, съветът ми е да не се фрапираш толкова за typeof или !isNaN() и двете работят за проверка на число.

Напиши в конзолата typeof typeof 1 и typeof !isNaN(1) и ще видиш кое какво ти връща като стойност(string/boolean).

!isNaN според мен е по масовата практика и като имаш метода на готово защо ти е да сравняваш стринг?

Накрая, но по-важното: е да сравняваш с === (по тип и стойност) а не с  == защото двойното равенство може да ти донесе повече главоболие отколкото typeof или !isNaN

1
18/03/2015 21:20:11
eeevgeniev avatar eeevgeniev 3 Точки

Здравейте, може ли да ми дадете малко насоки за променливата persons в задача 5 Group People, която трябва да се подаде към функцията ми.

var persons = {

people.push(new Person("Scott", "Guthrie", 38));

..........................................................................

people.push(new Person("Jon", "Skeet", 38));

};

group(persons, 'firstname');

На мен всеки път ми съобщава, че трябва да задам стойност на свойството.

0
ksevery avatar ksevery 35 Точки

Ами според мен условието нещо не е наред, защото реално нямаш обект people, аз си го направих по традиционния начин:

var persons = [

new Person('Scott', 'Guthrie', 38)

...

]

Така ми беше най-лесно, пък и в примерите после ще видиш, че има добавени 1-2 елемента, които ги няма в условието. Като цяло си го напиши както ти е по-удобно, поне така направих аз, съмнявам се някой да те ореже за това :)

 

0
idmitrov avatar idmitrov 55 Точки

Здравей в задачата се иска предварително да направиш Person конструктор и след това като го имаш в масива people да инициализираш нови инстанции на конструктура Person.За конструкции има доста в Google потърси.Общо взето е следното:

 

//PERSON CONSTRUCTOR
function Person (firstName, lastName, age) {
     this.firstName = firstName;
     this.lastName = lastName;
     this.age = age;
}

И после нова инстанция правиш така:

new Person("Scott", "Guthrie", 38).

0
20/03/2015 11:10:29
eeevgeniev avatar eeevgeniev 3 Точки

Да благодаря и на двамата, аз задачата съм я почти решил, трябва само да видя дали да скривам кавичките от крайния резулта. Проблема ми е, че persons е декларирана като ъъъ обект, а вътре в нея се добавят нови "лица" към списък people. Аз ли трябва да добавя people като свойство на persons или persons е трябвалo да е функция, която добавя нови лица към people?

0
patrik avatar patrik 26 Точки

Здравейт, ще използвам темата за да попитам нещо, а именно имам проб с разбирането на Problem 3 Replace<a>Tag

Трябва ли да се прави html файл и от там да реплейсваме, или това е достатъчно:

var str = "<ul><li><a href=http://softuni.bg>SoftUni</a></li></ul><a href=http://softuni.bg>SoftUni</a><a href=http://softuni.bg>SoftUni</a>";
MyFunction(str);
function MyFunction(str) {
var rezult = str.replace( /<a href=/g, "[URL href=");
console.log(rezult);

}

0
Kamigawa avatar Kamigawa 750 Точки

Това е достатъчно, но трябва да замениш и затварящия таг -> [URL ..... ] .... [/URL]

1
20/03/2015 15:21:16
enevlogiev avatar enevlogiev 1167 Точки

Малко ме бъгва мен пета задача. Получавам отговори, но не знам дали ги получавам правилно. И самия overloading не ми е ясно дали го правя по правилния начин. Това ми е една част от кода -> pastebin На прав път ли съм или да търся други варианти ? : ) Тенкс.

0
eeevgeniev avatar eeevgeniev 3 Точки

Здравей, накрая можеш да промениш console.log(groupBy('firstName')); на console.log(JSON.stringify(groupBy('firstName')));. Ако искаш по-прецизен контрол на данните, които връщаш може да си напишеш функция toString в group (group { toString: function() {} }). Аз честно казано не виждам къде се използва overloading в тази задача, защото ние подаваме само един параметър към groupBy.

1
enevlogiev avatar enevlogiev 1167 Точки

Мерси

0
mbencheva avatar mbencheva 52 Точки

Здравейте,

 

И аз ще използвам темата за въпроси относно 3-та задача за същото домашно.

1. Не ми е много ясно какъв трябва да е формата, в който се подава инпута: по условие: всеки таг е на нов ред, но ако така го подам не ми сработва?

2. като се принти резултата трябва ли отново всеки таг да е на нов ред + всички вложени тагове и с по таб отместване?

3. как реплейсвате ">" от таг-а "а" с "]"

(<a href=http://softuni.bg>)

 

Малко тъпи въпроси, ама нещо зациклих.

 

Благодаря предварително за коментарите

 

 

 

 

 

0
Filkolev avatar Filkolev 4485 Точки

1. Инпута се подава като стринг; в условието е дадено на отделни редове за удобство (визуално), но не е задължително, т.е. може целият код да е на един ред, няма особено значение. Ако се опитваш да копираш директно инпута, JS няма да продължи стринга на новия ред, трябва или да сложиш всичко на един ред, или да ескейпнеш новите редове. 

2. Резултата принтираш така, както ти е подаден входа, не променяш форматирането, т.е. само реплейсваш каквото трябва в подадения стринг и го връщаш след промените.

3. Това е интересната част. Моята препоръка е да реплейсваш целия таг. С exec() фунцкията може да хванеш инфото, което искаш да остане, след което правиш нов стринг. Ето накратко какво имам предвид. В група за прихващане запазваш самия линк (href=...) и текста, правиш нов стринг: '[URL ' + линка + ']' + текста + '[/URL]'. Накрая заменяш с replace целия стар таг с новия. Доста по-трудно е по мое мнение поотделно да се заменят триъгълните скоби; сама забелязваш колко е неприятно да опитваш да смениш само тези, които са към а-тагове, а да оставиш останалите както са.

1