Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по обучающим примерам. (https://javascript.ru/forum/misc/25075-vopros-po-obuchayushhim-primeram.html)

Славик 24.01.2012 16:09

Вопрос по обучающим примерам.
 
Если не в тот раздел, извините. :)
Начал изучение 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>

Вопрос: :-?
ЗАЧЕМ в примере "Специалиста" так много переменных??? и
ПОЧЕМУ работает мое решение???? (делал абсолютно по наитию(как кажется правильным))

Kolyaj 24.01.2012 16:50

Цитата:

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

Ну написали так, кто их знает, почему так.

Цитата:

Сообщение от Славик
ПОЧЕМУ работает мое решение????

А почему не должно?

Kolyaj 24.01.2012 19:15

alert((+prompt('Введите первое число') + +prompt('Введите второе число')) / 2);

melky 25.01.2012 00:49

Цитата:

Сообщение от Kolyaj (Сообщение 152574)
alert((+prompt('Введите первое число') + +prompt('Введите второе число')) / 2);

alert((+(a=prompt)('Введите первое число') + +a('Введите второе число')) / 2);

Славик 25.01.2012 02:28

На все ваши ответы у меня есть свой одни:
В рот мне чих-пых! Как вы это делаете!??!? Но задача была научится работать с функциями, хотя и ваши примеры я взял на заметку. :)
В моем решении меня интересует КАК он заработал, и ПОЧЕМУ, по какому алгоритму???? кто то может объяснить?

qwertyuiop10 25.01.2012 08:50

Славик,
Посто ты написал рабочий код. Тябя это удивляет? :) ты записал в переменные prompt, потом сделал функцию, возвращающюю их среднее арефметическое, потом вывел результат функции на страницу. Всё правильно, не удивляйся ))

Seva1986 25.01.2012 23:50

Цитата:

Сообщение от Славик
В моем решении меня интересует КАК он заработал, и ПОЧЕМУ, по какому алгоритму???? кто то может объяснить?

Ну так всё просто, по тому что интерпретатор яваскрипта разобрался с вашим кодом и смог его выполнить:)
А если серьёзнее то вам скорее всего не понятно почему уних используеться parseInt а у вас вместо него сразу c = +prompt ну так унарныйй плюс тоже преобразует в числовой тип. поэтому и работает правильно...

Славик 30.01.2012 14:02

с Предыдущим разобрался... у меня другой вопрос. Вот код
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 все начинает работать нормально...
:-? Почему так??? делалось все по аналогии и я не смог найти разницу между работающим кодом и моим...

melky 30.01.2012 14:39

выводите через alert.

nerv_ 30.01.2012 14:54

Славик, 11 строка z.lenght Это на первый взгляд.


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