Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Работа с последовательностью натуральных чисел (https://javascript.ru/forum/misc/17418-rabota-s-posledovatelnostyu-naturalnykh-chisel.html)

Stillife 18.05.2011 18:43

Работа с последовательностью натуральных чисел
 
В общем вот вся задача:

Напечатать true, если элементы последовательности упорядочены по возростанию и false – по убиванию.
В последовательности натуральных чисел подсчитать количество тех, которые заканчиваются на заданную цифру.
В заданной последовательности определить максимальное число подряд идущих положительных чисел.
Найти сумму тех членов последовательности, которые оканчиваются на заданную цифру.
Найти сумму четных членов последовательности целых чисел.

2 последних пункта, думаю, что сама смогу сделать.

P.S. Прошу прощения, что засоряю этот форум, но я с js никогда не работала. И не собираюсь. А вот курсовую работу делать нужно. Честное слово, пыталась сама что-то сделать, но кроме автоматического генерирования массива (что элементарно) ничего толкового не вышло.
Буду очень признательна за помощь. Просто уже не знаю к кому обратиться.

Matre 18.05.2011 20:03

var arr1 = [ 2, 3, 5, 7, 7, 7, 8, 10 ]; // для sorted()
var arr2 = [ 14, 17, 12, 57, 27, 19, 97 ]; // для endsWith()
var arr3 = [ -2, 7, 3, -1, 1, 2, 3, -5 ]; // для consecPositive()

/*
   Если массив отсортирован по возрастанию,
   возвращается 1, по убыванию — -1, если
   вообще не отсортирован, то 0.
*/

function sorted(A) {
	var T = A[0] < A[1], N = false;
	for (var i = 1; i < A.length - 1; i++) {
		if ( T ? A[i] > A[i+1] : A[i] < A[i+1] ) {
			N = true;
			break;
		}
	}
	return N ? 0 : T ? 1 : -1;
}

function endsWith(A, j) {
	var k = 0;
	for (var i = 0; i < A.length; i++)
		if (A[i] % 10 === j)
			++k;
	return k;
}

function consecPositive(A) {
	var max = 0, j = 0, F = false;
	for (var i = 0; i < A.length; i++) {
		if (!F && A[i] > 0) F = true, j = i;
		if (F && A[i] < 0) {
			if (i - j > max) max = i - j;
			j = 0; F = false;
		}
	}
	return max;
}

alert( sorted(arr1) );
alert( endsWith(arr2, 7) );
alert( consecPositive(arr3) );


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