Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужно подсчитать сколько было переходов от + к - (https://javascript.ru/forum/misc/65801-nuzhno-podschitat-skolko-bylo-perekhodov-ot-k.html)

EuRusik 08.11.2016 14:13

Нужно подсчитать сколько было переходов от + к -
 
var temp = [17, -9, -20, -34, -2, 32, -14, 40, -49, 45, -1, -40, -23, 14, -23, -43, 5, 2, -45, 40, -10, 25, -31, -14, -43, 33, 1, -1, 1, 24, 13, -46, -34, -17, 10, -28, -19, -5, -38, 0, -34, 15, 21, -46, -27, 41, 15, 19, -9, 27, -7, -3, -16, 36, 35, 17, -38, 41, -5, 8, -7, -37, 17, -33, -21, 7, 1, 33, -13, 27, -41, 2, -43, 14, 26, 7, -11, 29, 43, -14, -1, 36, 19, -41, -38, -10, 16, -2, -21, -36];

В массиве содержаться данные о ежедневной температуре в течении зимних месяцев. Нужно подсчитать сколько было циклом замерзания в этот период (замерзания это когда сегодня температура плюсовая, а завтра минусовая).

Помогите с алгоритмом:)
Я понимаю что нужно сравнивать через for первый элемент массива со вторым и если первый + а второй - то записать как 1 замерзание, потом проверяем второй с 3м если нет перехода от - к + или если есть то не пишем, поверяем дальше - если есть опять переход от + к - пишем, и т.д. но как это кодом написать -_-

ksa 08.11.2016 14:22

Цитата:

Сообщение от EuRusik
первый элемент массива со вторым

Текущий с последующим... ;)
Цитата:

Сообщение от EuRusik
если первый + а второй - то записать как 1 замерзание

Увеличить некий счетчик на единицу... ;)

рони 08.11.2016 14:27

EuRusik,
var temp = [17, -9, -20, -34, -2, 32, -14, 40, -49, 45, -1, -40, -23, 14, -23, -43, 5, 2, -45, 40, -10, 25, -31, -14, -43, 33, 1, -1, 1, 24, 13, -46, -34, -17, 10, -28, -19, -5, -38, 0, -34, 15, 21, -46, -27, 41, 15, 19, -9, 27, -7, -3, -16, 36, 35, 17, -38, 41, -5, 8, -7, -37, 17, -33, -21, 7, 1, 33, -13, 27, -41, 2, -43, 14, 26, 7, -11, 29, 43, -14, -1, 36, 19, -41, -38, -10, 16, -2, -21, -36];
var len = temp.filter(function(a,i) {
   return a > 0 &&  temp[++i] && temp[i] < 0
}).length;
alert(len)

ksa 08.11.2016 14:28

Цитата:

Сообщение от EuRusik
Я понимаю что нужно сравнивать через for
...
но как это кодом написать

Начиная читать учебники и свои лекции. ;)
https://learn.javascript.ru/array
https://learn.javascript.ru/while-for#цикл-for

Dilettante_Pro 08.11.2016 15:23

EuRusik,
А переход от 0 к минусу считается?

EuRusik 08.11.2016 15:29

Dilettante_Pro, Нет

EuRusik 08.11.2016 15:30

код оказался простой как пробка :)
var counter = 0;
    var day = 0;


    for(var i = 0; i < temp.length; i++)
    {
        if (temp[i] > 0 && temp[i + 1] < 0)
        {
            counter++;
            day = i;
        }
        console.log('Замерзание: ' + counter + ' день: ' + day);

    }

ksa 09.11.2016 08:43

Цитата:

Сообщение от EuRusik
код оказался простой как пробка

Разумеется! :yes:
Это ведь самые первые тренировочные задания на массивы и циклы... Т.е. букварские упражнения на понимание.


Часовой пояс GMT +3, время: 11:21.