Вход

Просмотр полной версии : Вывести максимальное число элементов массива


unkind
30.10.2015, 11:29
Здравствуйте!
Вводится последовательность из пяти чисел. Напишите сценарий, в котором определяется число максимальных элементов.
Данные ввести могу,а вот результат не выводится(только начал изучать,извините за плохой код)
<html>
<head><meta charset="utf-8">
<script language="JavaScript">
var array = new Array(5);
var i;
for(i=0;i<=5;i++)
{
array[i]=prompt("Введите " +i+" -е число:");
}

function nummax (array)
{ var m= v[0]
var k=1
for (var z=1; z <= v.length-1; z++)
{ if (v[z] > m)
{m= v[z]; k=1}
else
if (v[z] == m) k++
}
return k

document.write ("Сумма ", m)

}


</script>
</head>
<body>

</body>

</html>

ruslan_mart
30.10.2015, 12:34
Получить максимальное значение массива можно так:

var arr = [3, 5, 10, 8, 2],
max = Math.max.apply(null, arr);

alert(max);

unkind
30.10.2015, 12:41
Ruslan_xDD,
спасибо за элегантность,но я пытаюсь сам сделать, что не так в моем коде?может я не так вывожу данные?

рони
30.10.2015, 13:22
max = arr.sort()[0];
:blink: :stop:

ruslan_mart
30.10.2015, 13:37
рони, знаю, но как один из многих вариантов подойдёт. :)

unkind, потому что return возвращает значение, т.е., после него код в ф-ции уже не срабатывает, а у Вас там document.write.

unkind
30.10.2015, 13:40
Ruslan_xDD,
вот я и спросил как вывести грамотно,убрал ретурн и ничего

рони
30.10.2015, 13:51
знаю, но как один из многих вариантов подойдёт.
каким местом?
var arr = [3, 5, 1, 8, 20],
max = arr.sort()[0];
alert(max);

ruslan_mart
30.10.2015, 13:55
рони, ой всё :D Ошибся, бывает.

unkind, а вызов функции где? :)

рони
30.10.2015, 13:58
:)
var arr = [3, 5, 1, 8, 20],
max = arr.sort(function(a,b) {
return b - a // а для ТС return +b - +a
})[0];
alert(max);

unkind
30.10.2015, 13:58
Ruslan_xDD,
так я же пытаюсь вывести в теле функции или нужно отдельно создавать вывод?
пробовал через alert и так же ничего

ruslan_mart
30.10.2015, 14:00
unkind, так функцию же запустить нужно. :)

nummax(array);

unkind
30.10.2015, 14:02
Ruslan_xDD,
var array = new Array(5);
var i;
for(i=0;i<=5;i++)
{
array[i]=prompt("Введите " +i+" -е число:");
}


function nummax (array)
{ var m= v[0]
var k=1
for (var z=1; z <= v.length-1; z++)
{ if (v[z] > m)
{m= v[z]; k=1}
else
if (v[z] == m) k++
}
nummax(array);
document.write ("Сумма ",m)

}
если я верно понял

ruslan_mart
30.10.2015, 14:05
var array = new Array(5);
var i;
for(i=0;i<=5;i++)
{
array[i]=prompt("Введите " +i+" -е число:");
}


function nummax (array)
{ var m= v[0]
var k=1
for (var z=1; z <= v.length-1; z++)
{ if (v[z] > m)
{m= v[z]; k=1}
else
if (v[z] == m) k++
}
document.write ("Сумма ",m)

}


nummax(array);

unkind
30.10.2015, 14:08
Ruslan_xDD,
странно,не выводит результат

ruslan_mart
30.10.2015, 14:13
var array = new Array(5), i;

for(i = 0; i < array.length; i++) {
array[i] = +prompt('Введите ' + i + ' -е число:') || 0;
//С помощью оператора "+" преобразуем результат ввода в число
//Если преобразованное число будет NaN (bool false), то присваиваем 0
// alert( +'bla' ) -> NaN
}

function nummax(array) {
var i, n = 0;
for(i = 0; i < array.length; i++) {
if(array[i] > n) {
n = array[i];
}
}
return n;
}

alert( 'Максимальное число: ' + nummax(array) );

unkind
30.10.2015, 14:18
Ruslan_xDD,
буду разбираться,в карму кинул)

unkind
31.10.2015, 19:24
а если мне найти количество этих максимальных элементов нужно, то примерно так делать:
function nummax(array) {
var i, n = 0;
for(i = 0; i < array.length; i++) {
if(array[i] > n) {
n = array[i];
//ввести дополнительную переменную и в нее сохранять количество ?
}
}
return n;
}

n.length пытался....

ruslan_mart
31.10.2015, 20:09
unkind, как понять максимальных? В массиве есть максимальные и минимальные? И от кого числа отталкиваться?

Если же нужно получить количество элементов в массиве, то:

alert(array.length);

unkind
31.10.2015, 20:27
Ruslan_xDD,
т.е ввожу : 1,1,1,3,3 и мен выводится,что максимальный элемент 3 а всего этих максимальных элементов 2 шт
этот скрипт выводит просто максимальный, я думал может в js есть функция count или что-то похожее,length-это количество всех элементов

ruslan_mart
31.10.2015, 20:34
var array = new Array(5), i;

for(i = 0; i < array.length; i++) {
array[i] = +prompt('Введите ' + (i + 1) + ' -е число:') || 0;
//С помощью оператора "+" преобразуем результат ввода в число
//Если преобразованное число будет NaN (bool false), то присваиваем 0
// alert( +'bla' ) -> NaN
}

function nummax(array) {
var count, i, n = 0;
for(i = 0; i < array.length; i++) {
if(array[i] > n) {
n = array[i];
count = 1;
}
else if(array[i] == n) {
count++;
}
}
return {count: count, max: n};
}

var result = nummax(array);
alert( 'Максимальное число: ' + result.max + '\nКол-во максимальных чисел: ' + result.count);

unkind
31.10.2015, 20:39
благодарю,в карму +