Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   массив чисел (https://javascript.ru/forum/misc/42075-massiv-chisel.html)

Anna77 11.10.2013 12:19

массив чисел
 
Здравствуйте! Подскажите, можно ли проверять элементы как числа? т.к. в данной задаче получается 8 больше чем 44, к примеру.
var Arr = Array();
for (var i = 0; i<10; i++)
{
Arr[i] = prompt("Введите " + i + "-й элемент массива:");
}

рони 11.10.2013 12:45

Anna77,prompt возвращает строки
строка 8 больше чем строка 44 -- сделайте строку числом

vashurin 11.10.2013 12:45

Цитата:

Сообщение от Anna77 (Сообщение 275910)
Здравствуйте! Подскажите, можно ли при нахождении максимального элемента проверять элементы как числа? т.к. в данной задаче получается 8 больше чем 44, к примеру.
var Arr = Array();
for (var i = 0; i<10; i++)
{
Arr[i] = prompt("Введите " + i + "-й элемент массива:");
}
document.write("Введенный массив из 10 элементов: Arr [" + Arr + "] " + "</br>");

var arrLength = Arr.length;

var n = Arr.length, max = Arr[0], count = 1;

for (var i = 1; i < n; i++)
{if (Arr[i] > max)
{max = Arr[i]; count = 1;}
else
{if (Arr[i] == max) count++;}
}
document.write("Максимальное значение массива: " + max + ", его количество: " + count);

Ну во-первых, при вводе надо проверять, что вводится, это вообще число? К тому же, все, что вводится по умолчанию считается строкой, т.е. нужно принудительное преобразование типов, parseInt() и parseFloat() вам в помощь.
Во-вторых, document.write лучше не использовать, а использовать innerHTML

Anna77 11.10.2013 13:17

т.е. так, например : var num = parseInt(Arr[i]); ?

vashurin 11.10.2013 15:17

Цитата:

Сообщение от Anna77 (Сообщение 275922)
т.е. так, например : var num = parseInt(Arr[i]); ?

Да.
Ну или так: var num = parseInt(Arr[i])||0
т.е. если пользователь ввел целое число, то переменная num будет хранить это число, а если набор символов, которые целым числом не являются, то num станет равным 0.

Но, "по человечески", хорошо бы проверять данные в момент ввода, и если пользователь при вводе ошибся (случайно или специально внес не число), то сообщить ему об ошибке и дать возможность исправить ввод.
И уже потом обрабатывать введенные данные. :)

рони 11.10.2013 15:29

Цитата:

Сообщение от Anna77
prompt("Введите " + i + "-й элемент массива:");

+ перед prompt если точно числа вводятся

Anna77 13.10.2013 00:19

спасибо! :thanks:


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