Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Циклы, сумма и среднее арифметическое (https://javascript.ru/forum/misc/69673-cikly-summa-i-srednee-arifmeticheskoe.html)

Tanya51 11.07.2017 12:46

Циклы, сумма и среднее арифметическое
 
Есть такая задача:
Запустите цикл, в котором пользователю предлагается вводить число с клавиатуры, до тех пор, пока не будет нажата Отмена. После выхода из цикла распечатайте количество введенных чисел, их общую сумму и среднее арифметическое.


мой js:

label: for (var i=0;;i++){
var user = Number (prompt("введите число"));
if(user){
var amount =+amount+user;
continue label;
}else {
break;
}
}
var average = amount/i;
document.write(i+''); //количество введенных чисел
document.write('сумма:'+' '+amount);
document.write('среднее арифметическое:'+' '+average);

Помогите посчитать сумму чисел и их среднее арифметическое. Среднее арифметическое вроде правильно пишу, а вот с суммой что-то не так и не понимаю что. У меня в конце цикла получается переменная amount=NaN.

SergeyERjs 11.07.2017 13:30

amount не инициализирована.
Попробуйте добавить в самом начале:
*!*var amount =0;*/!*
label: for (var i=0;;i++){
...

Tanya51 11.07.2017 16:04

спасибо. Получилось)

Tanya51 11.07.2017 16:17

а с этой задачей поможете?

Используя вложенные циклы, сформируйте строку чередованием символов . и # таким образом, чтобы получилась шахматный узор. Для перевода строки используйте символ \n. Код должен поддерживать легкое изменение размеров доски.
.#.#.#.#.#.#
#.#.#.#.#.#.
.#.#.#.#.#.#
#.#.#.#.#.#.
.#.#.#.#.#.#


одну строку ".#.#.#.#.#.#"получается сделать, но дальше не получается.Не знаю как можно сделать

for (var j = 0; j < 1; j++) {
if (j % 2===0){
var w='.';
document.write(w);
}else if(j % 2===1){
var k='#';
document.write(k);
}
}

j0hnik 11.07.2017 18:32

По харду ;)
var a=8, b=8, str=''; // b-строки, a-столбцы
 while(b--) str += (b%2?'#.':'.#').repeat(a/2)+((a%2)?b%2?'#':'.':'')+'\n';
 console.log(str);


если вы используете document write по переход на следующую строку <br>

Tanya51 11.07.2017 20:45

а можете эту строчку расписать?
while(b--) str += (b%2?'#.':'.#').repeat(a/2)+((a%2)?b%2?'#':'.':'')+'\n';

Потому что так не совсем понятно. Слишком много знаков вопроса))

Tanya51 11.07.2017 20:49

и так он получается выводит 8 символов в строку и 8 строк.
А надо 12 символов в строку и 5 строк)

j0hnik 11.07.2017 22:47

var a=12, b=5, str=''; // b-строки, a-символы
 while(b--) str += (b%2?'#.':'.#').repeat(a/2)+((a%2)?b%2?'#':'.':'')+'\n';
 console.log(str);

можете указывать любое количество строк и символов.

while(b--) str += (b%2?'#.':'.#').repeat(a/2)+((a%2)?b%2?'#':'.':'')+'\n';


while(b--) //запускаем цикл b раз
str += //в котором за каждую итерацию добавляем в строку
(b%2?'#.':'.#').repeat(a/2) // если строка нечетная (тоесть процент от остатка равен 1, а 1 это true) '#.' - это кусок строки повторяем a-раз деленные на 2 т.к. в строке два символа. если четная то '.#' то же самое.
+((a%2)?b%2?'#':'.':'') // этот кусок кода только для нечетного количества символов если из будет 12 его можно вообще убрать.
+((a%2)?b%2?'#':'.':'') // если количество символов нечетное и строка нечетная то добавляется символ '#' если строка четная то символ '.' если же количество символов в строке четное, то добавляется пустая строка (тоесть ничего не добавляется) сделано это потому что .repeat повторяет целую строчку. пополам он ее не делит, проще говоря округляет число до целого как Math.floor.
Если что непонятно, почитайте про .repeat, тернарный оператор и цикл while

рони 11.07.2017 23:44

:)
Конкурс извратов

рони 12.07.2017 01:14

:lol: шифровка из центра ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  body{
     font-weight: 600;
  }

  </style>

</head>

<body>

<script>
function fn(a, d) {
    for (var c = "", b = 0; b < a * d; b++) c += b % 2 ^ (a % 2 || b % (2 * a) < a) ? "." : "#", (b + 1) % a || (c += "<br>");
    return c
};
for (var i=8; i<13; i++)  {
document.write("<h4>"+[i,i-7]+"</h4><br>"+fn(i,i-7)+"<br>")
}
  </script>
</body>
</html>


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