Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вывести максимальное число элементов массива (https://javascript.ru/forum/dom-window/59162-vyvesti-maksimalnoe-chislo-ehlementov-massiva.html)

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

Цитата:

Сообщение от Ruslan_xDD
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

Цитата:

Сообщение от Ruslan_xDD
знаю, но как один из многих вариантов подойдёт.

каким местом?
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

благодарю,в карму +


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