[JS] Arrays - зад. 6


6

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

Споделям своето решение, пък дали е станало нещо вие ще кажете :)

http://jsfiddle.net/siropo/6cNpr/1/

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

Поздрави!




Отговори



0
Здравей Викторе сигурно аз бъркам нещо по условито но съм го направил да сортира по големина и после да търси най-дългата редица
мисля, 4е пак работи не съм го тествал много веднага този версия ми хрумна
ще постна решението си утре.
Поздрави!!!!

от Borislav_Milanov (0 точки)


0
http://jsfiddle.net/Borislav_Milanov/EqWQD/
ето това сътворих май работи ако има забелележки казвай
Поздрави

от Borislav_Milanov (0 точки)


0
Здравейте колеги,
все си мисля, че сортирането е доста бавен процес по принцип и ако не е изришно зададено - то е по-добре да се пропусне. Предлагам решение без сорт, което минава един път през масива и проверява дали е срещано вече преди числото arr[i] . Ако да- увеличава бройката на срещанията до сега с 1. Ако не новото го добавя в 1 масив с newArr.push( arr[ i ] ) и му задава брой срещания до сега в масива едно.
Надявам се да е полезно.Ето кода:

Поздрави!!

от Vladi5rov (934 точки)


0
А това е моето виждане за нещата: function findBiggerNeighbor(){ var arrayToInspect = new Array(2,3,4,12,7,9,2,1,21,7); var result = ""; var i; for(i = 0; i <= arrayToInspect.length - 1; i++){ if((arrayToInspect[i] > arrayToInspect[i - 1]) && (arrayToInspect[i] > arrayToInspect[i + 1])){ result = "The first element bigger than his neighbours is: " + arrayToInspect[i] + " with index: " + i + " and it is bigger than: " + arrayToInspect[i + 1] + " and: " + arrayToInspect[i - 1]; break; } else if((i == arrayToInspect.length - 1) && (result == "")){ result = "-1"; } } alert(result) }

от dPetrov (80 точки)


3

 

Понеже задачите за домашно по JavaScript Part1 на курсистите започнали курса на 18.02.2013 съвпадат с тези, ще пусна моето решение тук, за да избегна дублирането на теми.

Demo

Source

Потребителят си въвежда елементите на масива, като между тях оставя 1 интервал разстояние. Следва сплитване по интервал на въведените данни и инициализирането на помощни променливи, в които ще пазим текущата стойност на елемент от масива, текущата честота на повторение на тази стойност, най-често повтарящата се стойност досега, както и честотата й на повторение. Чрез 2 вложени for цикъла правим проверка дали текущата стойност на елемент/дефинирана от външния фор цикъл/ е равен на някой от другите елементи на масива /дефиниращи се от вътрешния for цикъл/. Ако срещне съвпадение на елементи, присвояваме на frequentValue стойността на tempValue, като увеличаваме с 1-ца променливата, която пази честотата на повторение на текущата стойност, а именно- tempFrequency. Следва проверка дали тя е по-голяма от стойността на най-добрата повтаряща се досега и ако е така и присвояваме стойността /bestFrequency = tempFrequency  както и bestValue = tempValue/. 

При връщането ни отново към външният for цикъл е необходимо да нулираме променливата tempFrequency за да е коректна последващата проверка и така докато не се обходи целият масив.

 


от Vlado_XXX (944 точки)


1
Ето и моя вариант:
http://jsbin.com/OtaMuTA/1/edit?html,console

от bstaykov (528 точки)


0
не работи, ако числата не са едно след друго, колега :) т.е ако е въведено 1,2,1,3,1,2,2,1,4,1 ще ти изкара, че 2 е най-честото число

от Wasilsarandev (480 точки)


0

Решение

С два вложени for цикъла броя колко пъти се среща всеки елемент. Накрая пазя в променливи броя повторения и самия елемент. 
 

от dzhenko (3893 точки)


1

тук са всичките ми задачи от масиви.

Шеста задача реших като направих нещо като dictionary в JS - правя един празен обект. След това с един цикъл минавам през стойностите на масива. Проверявам дали обекта има пропърти равно на текущата стойност - ако няма му добавям такова и му давам стойност единица, т.е. срещало се е веднъж; ако има просто му увеличавам стойността с едно.

Мисля, че се получи готино, а и може подхода да е полезен за изпита :)

Също така интересното е, че може да работи с всякакви стойности, не само с числа!


от wnvko (3123 точки)


1

Здравейте,

ТОВА са мойте задачи от масиви, понеже са в един файл пращам линк към gidhub-а.

Конкретната задача съм решил по-подобен алгоритъм на колегата wnvko,  но съм използвал само един цикъл, за да не се обхожда масива повторно. Индексът и стойноста на максимално повтарящият се елемент се изчисляват динамично при самото броене.


от kizisoft (803 точки)


1
"Write a program that finds the most frequent number in an array."
 
Аз съм го направил само с едно обхождане на масива. При него едновременно се попълва речника с броя срещания, и се проверява дали текущата честота не е най-голямата. В края на цикъла имаме стойността на най-често срещаното число, а честотата вземаме от речника. Речника е най-обикновен обект, към който добавяме като ключ стойността на даден елемент от масива, а като стойност - броя срещания. Проверката дали ключа е вече създаден в "речника", правя с проверка дали е undefined, в слуачая това върши работа.
 

от neutrino (3376 точки)


0

Здравейте,

ето кода към решението ми на 6 задача (адаптирано е от C# и кода не е тестван).

Проблема е следния - изобщо не мога да накарам функцията да проработи с Firebug излиза съобщение:  ReferenceError: mostFrequentNumber is not defined

http://localhost:55346/6.html

Line 1
 
Функцията съм я декларирала както при предишните задачи, на onclick мисля, че също е зададена коректно. 
Идеи какво се случва?
 
Ето и кода към решението: http://jsfiddle.net/Kt7n2/4/
 

от JuliaS (207 точки)


0
Сигурна ли си че ти дава грешка, аз тествах и при мен се изпълнява нормално, ето виж тук кода ти, не съм променял нищо по функцията, само промених пътя до js-console.js, при мен работи и на Firefox и на Chrome: http://pastebin.com/5cXtt8np

от tsonko_genov (708 точки)

0
Благодаря ти, че погледна. Нямам идея защо, но като отварям задачата през VS не работи, вече ми даде идея как да си тествам сама :)Ще добавя към решенията още една отделна папка за тази задача, за да съм сигурна, че проверяващия ще получи и решение, което и при мен е работило.

от JuliaS (207 точки)