Поиск максимума получем 0
Задача найти максимальное значение элементов. Предусмотреть ввод только отрицательных чисел.
Я не знаю как можно сделать проверку решил просто выводить сообщение о вводе не правильного числа. Но код ведет себя странно. т.е если я ввожу отрицательные числа то переменные получают значение 0, а если числа положительные тогда все в порядке. Сделал аналогичный код в vba проблем не возникло.
<HTML>
<HEAD>
<TITLE>Вычисление максимального значения</TITLE>
[JS] <script language="JavaScript">
<!-- //
function maxval (obj, form1,a,b,c,d,e )
{
var a = Number(obj.num1.value);
var b = Number(obj.num2.value);
var c = Number(obj.num3.value);
var d = Number(obj.num4.value);
var e = Number(obj.num5.value);
var m=a
if (a>0 || b>0 ||c>0 || d>0 ||e>0)
alert('Упсс!!! введено занчение больше 0!!!')
else {
if (b > m) m=b
if (c > m) m=c
if (d > m) m=d
if (e > m) m=e
obj.res.value=m }
}
//-->
</script>[/JS]
</HEAD>
<BODY>
<H4>Вычисление максимального значения</H4>
<FORM name="form1">
Число 1: <input type="text" size=8 name="num1" ><hr>
Число 2: <input type="text" size=8 name="num2"><hr>
Число 3: <input type="text" size=8 name="num3"><hr>
Число 4: <input type="text" size=8 name="num4"><hr>
Число 5: <input type="text" size=8 name="num5"><hr>
Максимальное значение равно
<input type="button" value=Определить onClick="maxval(form1)" align="top">
<input type="text" size=8 name="res"><hr>
<input type="reset">
</FORM>
</BODY>
</HTML>
|
<!DOCTYPE html>
<title>Вычисление максимального значения</title>
<script>
function maxval ()
{
var inputs = document.getElementsByName('input[]');
var numbers = [];
for (var i = 0; i < inputs.length; i++) {
numbers[i] = +inputs[i].value;
}
var max = Math.max.apply(Math, numbers);
if (max > 0) {
alert('Упсс!!! введено занчение больше 0!!!')
} else {
alert('Max: ' + max);
}
}
</script>
<h4>Вычисление максимального значения</h4>
<form>
Число 1: <input type="text" size=8 name="input[]"><hr>
Число 2: <input type="text" size=8 name="input[]"><hr>
Число 3: <input type="text" size=8 name="input[]"><hr>
Число 4: <input type="text" size=8 name="input[]"><hr>
Число 5: <input type="text" size=8 name="input[]"><hr>
Максимальное значение равно
<button type="button" onclick="maxval()" align="top">Определить</button>
<input type="text" size=8 name="res"><hr>
<input type="reset">
</form>
|
Спасибо:). Я так понял, что скорей всего ошибка в конструкции
if (a>0 || b>0 ||c>0 || d>0 ||e>0)/ . Буду использовать Math дальше. |
wakafaka,
danik.js, оба ваши варианта рабочие, но выдадут ноль если один из инпутов пуст.
alert([Number(''),+''])
|
Если в исходном сообщении заменить
if (a>0 || b>0 ||c>0 || d>0 ||e>0) на if (a>=0 || b>=0 ||c>=0 || d>=0 ||e>=0) то это защитит не только от положительных значений, но и от пустых строк. К тому же в условии явно сказано "Предусмотреть ввод только отрицательных чисел." а ноль отрицательным числом не является. А еще лучше: if ( !( a<0 && b<0 && c<0 && d<0 && e<0 ) ) ведь x>=y и !(x<y) не всегда одно и то же :-) |
if (max > 0) заменить на if (max >= 0) - это ежу понятно )
|
Цитата:
|
else {
if (b > m) m=b
if (c > m) m=c
if (d > m) m=d
if (e > m) m=e
obj.res.value=m }
}
Когда код выполняется в этом блоке, то значения переменных равны 0,а не те что были введены. Решал другую задачу по проще, там такой проблемы нет. function maxval (obj, form1,a,b,c,d,e )
{
var a = Number(obj.num1.value);
var b = Number(obj.num2.value);
var c = Number(obj.num3.value);
var d = Number(obj.num4.value);
var e = Number(obj.num5.value);
if (a>=0 || b>=0 || c>=0|| d>=0 || c>=0) {
alert ('Упс... Введено занчение больше 0') }
else {
var s = (a*b*c*d*e)/5
obj.res.value=s }
Может не правильно составлена конструкция else .. if. Лучше наверное было вызвать поиск максимума отдельной функцией. Но у меня не с работал код увы. Интерпретатора нет проверить на ошибки. <script language="JavaScript"> <!-- //
function lol (obj, form1,a,b,c,d,e,m)
{
if (b > m) m=b
if (c > m) m=c
if (d > m) m=d
if (e > m) m=e
obj.res.value=m
return m; }
function maxval (obj, form1,a,b,c,d,e,m )
{
var a = Number(obj.num1.value);
var b = Number(obj.num2.value);
var c = Number(obj.num3.value);
var d = Number(obj.num4.value);
var e = Number(obj.num5.value);
var m=a
if (a>0 || b>0 ||c>0 || d>0 ||e>0)
alert('Упсс!!! введено занчение больше 0!!!')
else lol (obj, form1,a,b,c,d,e,m)
}
|
| Часовой пояс GMT +3, время: 12:04. |