Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.02.2013, 03:19
Интересующийся
Отправить личное сообщение для wakafaka Посмотреть профиль Найти все сообщения от wakafaka
 
Регистрация: 27.08.2012
Сообщений: 10

Поиск максимума получем 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>
Ответить с цитированием
  #2 (permalink)  
Старый 28.02.2013, 03:55
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<!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>
Ответить с цитированием
  #3 (permalink)  
Старый 28.02.2013, 04:33
Интересующийся
Отправить личное сообщение для wakafaka Посмотреть профиль Найти все сообщения от wakafaka
 
Регистрация: 27.08.2012
Сообщений: 10

Спасибо. Я так понял, что скорей всего ошибка в конструкции
if (a>0 || b>0 ||c>0 || d>0 ||e>0)
/ . Буду использовать Math дальше.
Ответить с цитированием
  #4 (permalink)  
Старый 28.02.2013, 09:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

wakafaka,
danik.js,
оба ваши варианта рабочие, но выдадут ноль если один из инпутов пуст.
alert([Number(''),+''])
Ответить с цитированием
  #5 (permalink)  
Старый 28.02.2013, 09:43
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Если в исходном сообщении заменить
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) не всегда одно и то же :-)
Ответить с цитированием
  #6 (permalink)  
Старый 28.02.2013, 10:04
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

if (max > 0) заменить на if (max >= 0) - это ежу понятно )
Ответить с цитированием
  #7 (permalink)  
Старый 28.02.2013, 16:06
Интересующийся
Отправить личное сообщение для wakafaka Посмотреть профиль Найти все сообщения от wakafaka
 
Регистрация: 27.08.2012
Сообщений: 10

Сообщение от rgl Посмотреть сообщение
Если в исходном сообщении заменить
if (a>0 || b>0 ||c>0 || d>0 ||e>0)
на
if (a>=0 || b>=0 ||c>=0 || d>=0 ||e>=0)
пробовал так, но начал получать сообщения при любом вводе, что значение больше 0. по этому убрал =, оказывается надо было все значения заполнить
Ответить с цитированием
  #8 (permalink)  
Старый 28.02.2013, 16:21
Интересующийся
Отправить личное сообщение для wakafaka Посмотреть профиль Найти все сообщения от wakafaka
 
Регистрация: 27.08.2012
Сообщений: 10

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)
 }
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мгновенный поиск, подсветка, переход к найденному rdfhnbhf Javascript под браузер 0 05.07.2012 12:28
Поиск в тексте javascript jQuery 3 31.05.2011 11:40
PagingToolbar и поиск DenQ ExtJS 5 02.11.2010 00:16
Поиск последнего слова в строке AlexFadeev Элементы интерфейса 3 01.04.2010 18:56
Поиск в массиве через JavaScript Noran Общие вопросы Javascript 0 10.08.2008 17:31