Поиск максимума получем 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, время: 01:54. |