Javascript.RU

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

Вопрос по обучающим примерам.
Если не в тот раздел, извините.
Начал изучение JavaScript. Параллельно читаю учебник на этом сайте и смотрю видео курс "Специалист". Делал задания по видео про функции. Задание было сделать функцию вычисления средне арифметического числа.

Вот как сделал "Специалист":

<script>
    function middle (a1,a2) 
       {
         var f = (a1 + a2)/2;
         return f; 
       }
     var s1 = prompt ('Введите первое число','');
     s1 = parseInt(s1);
     var s2 = prompt ('Введите второе число','');
     s2 = parseInt(s2); 
     
     var j = middle(s1,s2);
     
     document.write (j)
</script>

А вот как сделал я:
<script>
      var c = +prompt ("Введите первое число","");
      var v = +prompt ("Введите второе число","");
        function z(c,v) 
	    {
	      return "Среднее арифметическое " + (c + v) / 2;  
	    }
        document.write (z(c,v));
</script>

Вопрос:
ЗАЧЕМ в примере "Специалиста" так много переменных??? и
ПОЧЕМУ работает мое решение???? (делал абсолютно по наитию(как кажется правильным))
Ответить с цитированием
  #2 (permalink)  
Старый 24.01.2012, 16:50
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Славик
ЗАЧЕМ в примере "Специалиста" так много переменных???
Ну написали так, кто их знает, почему так.

Сообщение от Славик
ПОЧЕМУ работает мое решение????
А почему не должно?
Ответить с цитированием
  #3 (permalink)  
Старый 24.01.2012, 19:15
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

alert((+prompt('Введите первое число') + +prompt('Введите второе число')) / 2);
Ответить с цитированием
  #4 (permalink)  
Старый 25.01.2012, 00:49
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Kolyaj Посмотреть сообщение
alert((+prompt('Введите первое число') + +prompt('Введите второе число')) / 2);
alert((+(a=prompt)('Введите первое число') + +a('Введите второе число')) / 2);
Ответить с цитированием
  #5 (permalink)  
Старый 25.01.2012, 02:28
Новичок на форуме
Отправить личное сообщение для Славик Посмотреть профиль Найти все сообщения от Славик
 
Регистрация: 24.01.2012
Сообщений: 7

На все ваши ответы у меня есть свой одни:
В рот мне чих-пых! Как вы это делаете!??!? Но задача была научится работать с функциями, хотя и ваши примеры я взял на заметку.
В моем решении меня интересует КАК он заработал, и ПОЧЕМУ, по какому алгоритму???? кто то может объяснить?
Ответить с цитированием
  #6 (permalink)  
Старый 25.01.2012, 08:50
Аспирант
Отправить личное сообщение для qwertyuiop10 Посмотреть профиль Найти все сообщения от qwertyuiop10
 
Регистрация: 29.09.2011
Сообщений: 42

Славик,
Посто ты написал рабочий код. Тябя это удивляет? ты записал в переменные prompt, потом сделал функцию, возвращающюю их среднее арефметическое, потом вывел результат функции на страницу. Всё правильно, не удивляйся ))
Ответить с цитированием
  #7 (permalink)  
Старый 25.01.2012, 23:50
Профессор
Отправить личное сообщение для Seva1986 Посмотреть профиль Найти все сообщения от Seva1986
 
Регистрация: 01.10.2011
Сообщений: 422

Сообщение от Славик
В моем решении меня интересует КАК он заработал, и ПОЧЕМУ, по какому алгоритму???? кто то может объяснить?
Ну так всё просто, по тому что интерпретатор яваскрипта разобрался с вашим кодом и смог его выполнить
А если серьёзнее то вам скорее всего не понятно почему уних используеться parseInt а у вас вместо него сразу c = +prompt ну так унарныйй плюс тоже преобразует в числовой тип. поэтому и работает правильно...
Ответить с цитированием
  #8 (permalink)  
Старый 30.01.2012, 14:02
Новичок на форуме
Отправить личное сообщение для Славик Посмотреть профиль Найти все сообщения от Славик
 
Регистрация: 24.01.2012
Сообщений: 7

с Предыдущим разобрался... у меня другой вопрос. Вот код
var z = new Array();
	 do
	  {
	     var x = +prompt('Введите число или 0 для отмены','');
		 if (x) z.push(x);
	  }
	 while ( x );
	 document.write ('Вы ввели числа : ' + z + '<br/>');
	 
	 var s = 0;
	 for ( i = 0; i < z.lenght; i++)
	 //document.write (z[i]);
	   {s += z[i];} 
	  if (z.length > 0) 
	 { var d = s/z.length;}
	 document.write ('Среднее число : ' + d);


Он должен вычислять среднее арифметическое из введенного массива. НО почему то не выводит, а выводит среднее 0, если убрать закомментированную строчку с документ.врайтом и сделать ее активной, то
1 оно не выводит документ.врайт на страницу
2 все начинает работать нормально...
Почему так??? делалось все по аналогии и я не смог найти разницу между работающим кодом и моим...
Ответить с цитированием
  #9 (permalink)  
Старый 30.01.2012, 14:39
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

выводите через alert.
Ответить с цитированием
  #10 (permalink)  
Старый 30.01.2012, 14:54
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Славик, 11 строка z.lenght Это на первый взгляд.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос про возможности JS для рисования и анимации macdack Библиотеки/Тулкиты/Фреймворки 3 15.07.2011 00:13
Я как ответить на вопрос - есть ли жизнь на других планетах? TicTac Оффтопик 5 28.04.2011 04:29
Вопрос по замыканиям Goodfella Общие вопросы Javascript 20 09.03.2011 01:21
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49
Вопрос о циклических ссылках (JavaScript -> Dom -> JavaScipt) BlueIce Events/DOM/Window 10 17.02.2010 21:58