Jump to content
  • 0

Двойной цикл FOR


Question

Есть задача:
 

Вывести простые числа
важность: 3

Натуральное число, большее 1, называется простым, если оно ни на что не делится, кроме себя и 1.

Другими словами, n > 1 – простое, если при его делении на любое число кроме 1 и n есть остаток.

Например, 5 это простое число, оно не может быть разделено без остатка на 2, 3 и 4.

Напишите код, который выводит все простые числа из интервала от 2 до n.

Для n = 10 результат должен быть 2,3,5,7.

P.S. Код также должен легко модифицироваться для любых других интервалов.

 

Вот решение задачи вложенным циклом FOR

let n = 10;

nextPrime:
for (let i = 2; i <= n; i++) { // Для всех i...

  for (let j = 2; j < i; j++) { // проверить, делится ли число..
    if (i % j == 0) continue nextPrime; // не подходит, берём следующее
  }

  alert( i ); // простое число
}


 

Правильно я понимаю? Речь про строку
  if (i % j == 0) continue nextPrime;

За первой итерацией будет проверяться остаток от деления 3/2?
i до того как дойдет до второго внутреннего for из-за i++ станет 3, хотя он стартовал с 2 и затем будет в If проверяться остаток от деления 3/2 (три на два за первым прогоном цикла)?

Link to post
Share on other sites

Recommended Posts

  • 0

1. При проверке. не делиться ли число, лучше проверять сначала не делиться ли оно на два, а потом проверять только нечетные числа, т.е. j будет изменяться от трех, и с шагом 2 (а не от двух и с шагом 1, как сейчас). Так вы почти в два раза уменьшите количество проверок.

2. Проверять делимость нужно не на все числа меньше i а только на все числа меньше либо равно КОРЕНЬ из i, т.к. если i делится на число, больше чем корень из i, то результат будет меньше, и оно делится на него тоже. Корень, конечно же, находить не в каждой итерации цикла, а один раз предварительно.

3. Первый пункт можно  слегка усовершенствовать, т.е. проверять входит ли 2 в диапазон, а затем проверять только нечетные числа, т.е. i тоже меняется от трех и с шагом 2.

Link to post
Share on other sites
  • 0

Натуральное число, большее 1, называется простым,
если оно ни на что не делится, кроме себя и 1.
Как я понял, например если взять число 4,
 оно не простое, оно делится и на себя и на 1 и на четное 2.

Теперь если глянуть на код как он работает.

1-ая итерация цикла:
Идет проверка на остаток числа 3/2= есть остаток от деления.
Алерт должен вывести 3 а не 2, но почему вывод вначале двйоки произошел?
Ведь i = 3 за первым прогоном после i++ он стал 3
2-ая итерация цикла:
Метка перешла на начало цикла и пошла проверка 4/3?
Объясните, как происходит первая и вторая итерация в этом коде цифрами, что на что делится и как выводится очередность?
Я модернизировал код с кнопкой, для удобности, но как происходит проверка при итерациях не понял.
 

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тест</title>
  <script>
  function fanta(){
    let rez =  one.elements.number.value;
        nextPrime:
     for(let i = 2; i<=rez; i++){
        for( let j = 2; j < i; j++){
            if(i%j ==0) continue nextPrime;
       }
    document.write(i+"<br>");       
    }
}
 
  </script>
 </head>
 <body>   
<form id="one">
    <input type="text" name="number" >
    <input type="submit" onClick="fanta()" value="Жми">
</form>

<p id='result'></p>

 </body>
</html>


 

Edited by denis_alekss
Link to post
Share on other sites
  • 0
26 минут назад, denis_alekss сказал:

Ведь i = 3 за первым прогоном после i++ он стал 3

При первой итерации i=2, а не 3. Так как i++ срабатывает после того как отработало тело цикла .

Соответственно при i=2 условие j < i не срабатывает так как 2 не может быть меньше 2, внутренний цикл не запускается, срабатывает document.write(i+"<br>"); и в документ выводится 2

После этого срабатывает i++ и становится равной 3. Начинается вторая итерация. Во внутреннем цикле проверяется j < i , условие срабатывает так как 2 меньше трех и мы попадаем в тело внутреннего цикла где проверяется условие i%j == 0 

Здесь мы получаем false, возвращаемся в for( let j = 2; j < i; j++)  где срабатывает j++ , становится равным 3 (как мы помним тоже равно 3), проверяется условие j < i и заканчивается работа внутреннего цикла ведь 3 не меньше 3, срабатывает document.write(i+"<br>"); и в документ выводится 3.

Срабатывает i++ и становиться равным 4, запускается внутренний цикл где проверяется j<i , условие срабатывает так как 2 меньше 4 и мы попадаем в if где условие i%j == 0 возвращает true и срабатывает continue.

Опять i++, i становиться равным 5, срабатывает условие во внутреннем for, 2 < 5, попадаем в if, 5 на 2 без остатка не делиться, continue не срабатывает, попадаем во внутренний for, j++ и равно 3, 3 < 5, выполняем тело цикла, условие в if возвращает false, (5 на 3 без остатка не делится), опять возвращаемся во внутренний for, j++ и равно 4, 4 < 5, идем в if который возвращает false. Опять внутренний for, j++ и равно 5, условие во внутреннем for не срабатывает (5 не меньше 5), выходим их внутреннего цикла, выполняется document.write(i+"<br>") и в документ выводится которое равно 5.

Ну и так далее. Про работу разных циклов можете почитать вот здесь: https://learn.javascript.ru/while-for 

а также поставить брейкпоинты в инспекторе и посмотреть пошагово как работает код. И да, не используйте document.write так как при полностью загруженном документе он переписывает документ полностью и ваш код отработает только один раз. Т.е. ваша запущенная функция отработает как положено, выведет все что положено, но после окончания работы вы не сможете запустить ее еще раз, так как у вас не будет ни самой функции, ни поля для ввода, ни кнопки.

  • Like 1
Link to post
Share on other sites
  • 0

Спасибо большое за подробное изъяснение, вопрос про внутренний цикл FOR.  

Почему j начинает меняться на j++ только тогда когда уже i =5, а не за каждую итерацию? 

Вы пишите: «, становится равным 3 », а затем при следующей итерации во внутренем цикле j=2  и 4 делится на 2 ( хотя было 3 ). Почему j за следующей итерацией, после того как j было 3 стало 2?

 

Важный момент, я про это:

Здесь мы получаем false, возвращаемся в for( let j = 2; j < i; j++)  где срабатывает j++

 

То есть если условие оказалось ложью мы возвращаемся снова во внутренний цикл, второй раз? Внутренний цикл запускается 2 раза если условие во внутреннем цикле for оказалось ложью? 

 

 

Цитата

условие срабатывает так как 2 меньше 4 и мы попадаем в if где условие i%j == 0 возвращает true и срабатывает continue.

То есть происходит выход из внутреннего цикла и    document.write(i+"<br>");

пропускается когда условие true? Ничего не выводится

 

Цитата

а, не используйте document.write 

я пробовал сохранять результат в InnerHTML,а затем выводит ссылаясь на getElementById не сохраняется весь вывод всех итераций, тут наверное массив нужно создавать

Edited by denis_alekss
Link to post
Share on other sites
  • 0
9 часов назад, denis_alekss сказал:

Почему j начинает меняться на j++ только тогда когда уже i =5, а не за каждую итерацию? 

Смотрите, когда начинается цикл for, происходит следующее: при входе в цикл первая часть for (в данном примере let j = 2;)всегда отрабатывает только один раз и неважно сколько будет работать цикл. Затем при каждой итерации проверяется условие j < i ,если оно выполняется, то отрабатывает тело цикла, после того как отработало тело срабатывает j++ и, с проверки условия j < i, начинается новая итерация . Просто при первом заходе во внутренний цикл когда i=2 и j=2 проверка j < i возвращает false и цикл заканчивает работу.

9 часов назад, denis_alekss сказал:

Почему j за следующей итерацией, после того как j было 3 стало 2?

Потому, что j было равно 3 при прошлом запуске цикла, а при каждом новом запуске (не итерации, а именно запуске), т.е. после того как цикл завершил свою работу каким либо способом и вы вызываете его еще раз, опять отрабатывает первая часть let j=2;

9 часов назад, denis_alekss сказал:

Внутренний цикл запускается 2 раза если условие во внутреннем цикле for оказалось ложью? 

Нет, цикл работает до тех пор, пока условие в for (в данном случае j < i;) будет возвращать true. И не важно что там происходит в теле цикла (ну кроме случаев когда цикл прерывается принудительно)

9 часов назад, denis_alekss сказал:

То есть происходит выход из внутреннего цикла и    document.write(i+"<br>");

пропускается когда условие true?

Верно, если срабатывает continue, то цикл пропускает весь оставшийся код в теле, выполняет третью часть в for (в данном случае i++) и начинает следующую итерацию.

 

9 часов назад, denis_alekss сказал:

я пробовал сохранять результат в InnerHTML

просто innerHTML тоже перезаписывает содержимое элемента. Сделайте вот так например:

result.innerHTML += i+'<br>'; И поменяйте submit на button иначе у вас будет пытаться отправиться форма, ну или сделайте вот так: 

<input type="submit"   value="Жми" onClick="fanta(); return false;">

Link to post
Share on other sites
  • 0

Вроде разобрался, но прочитайте в самом конце вопрос и дайте пожалуйста ответ там на вопрос.

К примеру пользователь первоначально в вводит цифру 10 И мы нажимаем кнопку жми.

Сейчас напишу как я понял, как работает двойной цикл for.

 
nextPrime:

     for(let i = 2; i<=rez; i++){

        for( let j = 2; j < i; j++){

            if(i%j ==0) continue nextPrime;

       }

    document.write(i+"<br>");       

    }



 


 

1. В самом начале во Внутренним цикле for идет сравнение 2<2?
  (i=2, j=2) нет 2 не меньше двух, Внутренний цикл for не выполняется, так
как условие ложь и идёт переход со внутреннего во внешний цикл for где
 выполняется инструкция с выводом document.write(i+"<br>");  Выводим в конечный
результат  Первую цифру 2 на экран.

<————————————————————————————————-->

2. i увеличивается на один во внешнем цикле for, i =3, Далее во внутреннем
цикле for идёт сравнение 2<3?  (j=2, i=3) Да, 2 меньше трех и выполняется
 условие if Во внутреннем цикле. 3/2 дает остаток 0? Нет, не дает, Идёт возврат снова
 во внутренний цикл где (j=3, i=3), 3<3? Нет, не меньше, Внутренний Цикл for
не выполняется Идёт переход во внешний цикл For в котором выполняется инструкция

document.write(i+"<br>");   Выводим в конечный результат цифру 3 на экран.

<————————————————————————————————-->

3.i увеличивается на один во внешнем цикле for, i =4, Далее во внутреннем
 цикле for идёт сравнение 2<4?  (j=2, i=4) Да, 2 меньше 4 и выполняется условие
 if Во внутреннем цикле. 4/2 дает остаток 0 -это истинна и идет переход
 к метке nextPrimе.  Запускается внешний цикл снова,  увеличивается i на один
во внешнем цикле for и i =5.  Далее во внутреннем цикле for идёт сравнение 2<5?  
(j=2, i=5), Да, меньше, выполняем if во внутреннем цикле, if дает ложь. Идёт переход
 снова во внутренний цикл for, j увеличивается на 1 (j=3, i=5).

        3<5? Да, снова выполняется условие if,

5/3 дает ложь, идет снова возврат во внутренний цикл for, (j=4, i=5),

Выполняется снова if, 5/4 дает ложь, снова возврат во внутренний цикл

(j=5, i=5) 5<5, Нет не меньше идёт переход во внешний
 цикл for где выводится через  document.write(i+"<br>");

результат на экран Имеем уже на данный момент 2,3, 5 на выводе.

<————————————————————————————————-->

4. i увеличивается на один во внешнем цикле for, i =6, Далее во внутреннем цикле for
идёт сравнение 2<6?  (j=2, i=6) Да, 2 меньше 6 и выполняется условие if Во внутреннем
цикле. 6/2 дает остаток 0, идете переход к метке. Снова запускается внешний цикл for,
уже  i=7. Во внутреннем цикле for Идёт сравнение 2<7, да. Условие иф дает ложь
 при 7/2, происходит возврат во внутренний цикл for (j=3, i=7) Условие иф дает ложь
 при 7/3, происходит возврат во внутренний цикл for (j=4, i=7) Условие иф дает ложь
 при 7/4, происходит возврат во внутренний цикл for (j=5, i=7) , Условие иф дает ложь
 при 7/5, происходит возврат во внутренний цикл for (j=6, i=7) Условие иф дает ложь
при 7/6, происходит возврат во внутренний цикл for (j=7, i=7). 7<7? Нет, Идет переход
 во внешний цикл for в котором document.write выводит на экран цифру семь.
<————————————————————————————————-->

5. i увеличивается на один во внешнем цикле for, i =8, Далее во внутреннем цикле for
идёт сравнение 2<8?  (j=2, i=8) Да, 2 меньше 8 и выполняется условие if во внутреннем
цикле. 8/2 дает остаток 0 -это истинна и идет переход к метке nextPrimе. Во внутреннем
цикле for Идёт сравнение 2<9, да, выполняется if 9/2 дает ложь, далее j++, идет
 возврат во внутренний цикл, j увеличивается на 1.(j=3, i = 9). 3<9? Да, выполняется
 условие if. 9/3 условие истинно и идет переход к метке, а затем i увеличивается
с 9 на 10 во внешнем цикле for.

 

КАКИМ ОБРАЗОМ ВЫВОДИТСЯ 9?

 

Edited by denis_alekss
Link to post
Share on other sites
  • 0

ну я как-то, для какой-то задачи (уже и не вспомню для какой именно) использовал три цикла. Т.е. вот так

for(){
  for(){
    for(){}
  }
}

но, скорее всего эту задачу можно было решить и по другому. Если использовать большее количество, то, вероятно, что-то делается не так 🙂 

Link to post
Share on other sites
  • 0

Как пошагово тестировать этот цикл в хром или Мозиле? Вы писали вроде в инспектор, но непонятно как в нем тестировать, чтобы пошагово проходило по циклу.

Edited by denis_alekss
Link to post
Share on other sites
  • 0

Я там прочитал и вроде все как проделал, выделил синим на фото начало функции и конец, не могу понять какой клавишей проходится пошагово, чтобы видеть как проходит цикл пошагово.

Снимок.JPG

Link to post
Share on other sites
  • 0

Чтобы пошагово видеть как проходится цикл, вам нужно выбрать его и расставить брейкпоинты в нем. Как то так:

Безымянный.jpg

после чего нажимать F9 в хроме или F10 в лисе
  • Like 1
Link to post
Share on other sites
  • 0

Вот выделил как у вас, нажимаю в Хроме F9, пробую даже F10, не срабатывает ничего, просто выделен этот код как на скрине внизу и больше ничего не происходит.

 

 

 

Снимок.JPG

Edited by denis_alekss
Link to post
Share on other sites
  • 0

Разобрался, отладчик Мозила за каждым шагом выводит на экран лучше чем ХРОМ, спасибо.

Последний момент с выводом через документ.врайт. Вы предложили альтернативу. Я попробовал вывести весь  результат в <p id='result'></p>

и вместо строки document.write(i+"<br>");  указал   result.innerHTML += i + '<br>'; 

Запускаю программу, ввожу в текстовое поле 10, нажимаю на кнопку, происходит мгновенный вывод всего результата за 1 сек и сразу вывод исчезает. Почему результат не остается на экране? Как лампочка загорелась и выключилась. Вот полный код.

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тест</title>
  <script>
  function fanta(){
    let rez =  one.elements.number.value;
        nextPrime:
     for(let i = 2; i<=rez; i++){
        for( let j = 2; j < i; j++){
            if(i%j ==0) continue nextPrime;
       }
    result.innerHTML += i + '<br>';      
    }
}
 
  </script>
 </head>
 <body>   
<form id="one">
    <input type="text" name="number" >
    <input type="submit" onClick="fanta()" value="Жми">
</form>

<p id='result'></p>

 </body>
</html>

Если написать такую строку

 

    result.getElementById('result').innerHTML += i + '<br>';    

Тогда вообще вывода не будет, даже мгновенного

Edited by denis_alekss
Link to post
Share on other sites
  • 0
8 часов назад, denis_alekss сказал:

Как лампочка загорелась и выключилась.

Это потому, что инпуты у вас находятся в теге form, а кнопка имеет тип submit. Это означает что при нажатии на такую кнопку форма пытается отправится на сервер и браузер заменяет страницу на ту, адрес которой указан в атрибуте action в теге form. Ну а раз там ничего не указано, то браузер просто перезагружает вашу страницу.

Тут я в логике поведения браузера могу ошибаться, так как не вдавался в подробности работы этого механизма, но в любом случае при отправке формы вы видите перед собой уже не ту страницу на которой нажимали кнопку.

Чтобы этого избежать напишите вот так: <input type="submit" onClick="fanta();return false" value="Жми">

или поменяйте тип инпута с submit на button

8 часов назад, denis_alekss сказал:

Если написать такую строку

потому что такой код вызывает ошибку. getElementById это метод объекта Document , а вы пытаетесь использовать его с переменной у которого его нет. поэтому ничего не происходит. И даже если бы такой код не вызывал ошибку, то, в любом случае, вы бы не получили нужный результат, так как он означал бы следующее - в элементе с id result получи элемент с id result и замени ему innerHTML.

p.s. И сразу ответ на возможный вопрос. Что-бы при каждом новом вводе числа и нажатии на кнопку данные обновлялись, а не добавлялись, в начале функции (до цикла) вставьте вот это: result.innerHTML = "";

  • Like 1
Link to post
Share on other sites
  • 0

Вот так сработало,спасибо

<input type="submit" onClick="fanta(); return false;" value="Жми">

Что делает текст return false? Возвращает ложь при отправке формы, из-за этого происходит выввод?

result - это объект объекта FORM, а форм объект объекта document?
  document.form.result?

Вот так намного лучше с result.innerHTML = " ";

 

  function fanta(){
	  result.innerHTML = " ";
    let rez =  one.elements.number.value;
        nextPrime:
     for(let i = 2; i<=rez; i++){
        for( let j = 2; j < i; j++){
            if(i%j ==0) continue nextPrime;
       }
    result.innerHTML += i + '<br>';      
    }
}

Кстати если ввести 50 000 в текстовое поле, браузер подвисает

 

Еще важный момент. Вы говорили что document.write переписывает весь документ при выводе и его лучше не использовать. Если дело обстоит с формой, можно использовать result.innerHTML, а если там просто <p id="result"></p>  Как правильней чтобы не переписывался документ производить вывод?

К примеру вот такой код не сработает:

 

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тест</title>
    <script>
let arr = ["Я", "изучаю", "JavaScript", "прямо", "сейчас", "помни", "это"];

arr.splice(-5,1);

for(let i = 0; i<arr.length; i++){
result.innerHTML = arr[i];}
  </script>
 </head>
 <body>   
<p id="result"></p>
 </body>
</html>

 

и такой тоже не сработает:

 

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тест</title>
    <script>
let arr = ["Я", "изучаю", "JavaScript", "прямо", "сейчас", "помни", "это"];

arr.splice(-5,1);

for(let i = 0; i<arr.length; i++){
document.getElementById("result").innerHTML = arr[i];}
  </script>
 </head>
 <body>   
<p id="result"></p>
 </body>
</html>

Сработало только так

 

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тест</title>
 </head>
 <body>   
<p id="result"></p>

    <script>
let arr = ["Я", "изучаю", "JavaScript", "прямо", "сейчас", "помни", "это"];
let output = document.getElementById('result');
let str = ' ';
arr.splice(-5,1);

for(let i = 0; i<arr.length; i++){
str += i + " - " + arr[i] + '<br>'}
output.innerHTML = str;
  </script>
 </body>
</html>

Но вы говорите что innerHTML равносильно document.write и так и так код переписывает документ, какая же альтернатива? Как вывести массив не перезаписуя документ? Как сделать подобие того как мы выводили двой цикл for строкой

  result.innerHTML += i + '<br>';      
    

 

Edited by denis_alekss
Link to post
Share on other sites
  • 0
2 часа назад, denis_alekss сказал:

Что делает текст return false?

В данном случае отменяет действие браузера по умолчанию. По умолчанию, при нажатии кнопки submit браузер отправляет форму, return false отменяет это действие, из-за чего форма не отправляется и открытая страница остается прежней.

2 часа назад, denis_alekss сказал:

result - это объект объекта FORM, а форм объект объекта document?

Если по простому, то да.

 

2 часа назад, denis_alekss сказал:

браузер подвисает

Естественно он подвиснет, ведь внешний цикл в таком случае выполняется 50000 раз, а внутренний аж (барабанная дробь)

Скрытый текст

121 287 006 раз 🙂

 

2 часа назад, denis_alekss сказал:

К примеру вот такой код не сработает:

Оба способа прекрасно работают и делают именно то, что вы и написали. Просто вы не успеваете увидеть всю работу кода, так как он слишком быстро меняет содержимое <p id="result"></p> Вы при каждом проходе цикла заменяете содержимое result на последующий элемент массива. В чем легко убедиться расставив брейкпоинты в инструментах и прогнав цикл по шагам. Если хотите что-бы в строку выводился каждый элемент массива, то сделайте так: result.innerHTML += arr[i]; или так: document.getElementById("result").innerHTML += arr[i];

2 часа назад, denis_alekss сказал:

Если дело обстоит с формой, можно использовать result.innerHTML, а если там просто <p id="result"></p>  Как правильней чтобы не переписывался документ производить вывод?

Не понял вопроса про форму и просто <p> Способов вывода информации существует несколько, и все они правильные 🙂 Можно с помощью innerHTML просто писать текст и теги (и причем теги будут работать как будто они написаны в html), можно использовать textContent который выведет теги просто как текст, а можно создавать создавать элементы с помощью createElement, цеплять их к другим элементам и потом выводить на экран целыми блоками 🙂 Все зависит от ситуации.

  • Like 1
Link to post
Share on other sites
  • 0

Работает и такой вариант:

 

document.getElementById('result').innerHTML += i + ' ' + arr[i] + '<br> ';}

и такой:

 

document.getElementById('result').

Какой из этих 2-ух вариантов лучше?

21 час назад, AlexZaw сказал:
21.12.2020 в 12:28, denis_alekss сказал:

result - это объект объекта FORM, а форм объект объекта document?

Если по простому, то да.

Если это так, тогда построим цепочку

document.forms.result.innerHTML += i + ' ' + arr[i] + '<br> ';}

Тогда получаю ошибку:

 

Цитата

Uncaught TypeError: document.forms[0] is undefined

 

Edited by denis_alekss
Link to post
Share on other sites
  • 0
21.12.2020 в 18:28, denis_alekss сказал:

innerHTML равносильно document.write и так и так код переписывает документ

innerHTML переписывает не документ полностью, а только содержимое конкретного элемента. Сама страница при этом остается прежней.

23 минуты назад, denis_alekss сказал:

Если это так, тогда построим цепочку

Это маленько не так работает. Почитайте вот тут про навигацию по формам: https://learn.javascript.ru/form-elements

 

23 минуты назад, denis_alekss сказал:

Какой из этих 2-ух вариантов лучше?

 

не понял вопроса. У вас один вариант меняет содержимое, а второй просто получает элемент.

Link to post
Share on other sites
  • 0

Прочитал информацию по ссылке, я так понял такая фишка только с формами работает вывод, если вывод например в span, div или р  сделать не получиться. Вот например:

 

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тест</title>
 </head>
 <body>  
<form name="my">
  <input name="one" value="1">
  <input name="two" value="2">
</form>

<script>
document.forms.my.elements.one.value = "Фэнтэзи";
</script>
 </body>
</html>

Стартует с объекта документ, заходит в форм, затем выбирает объект my одной из форм, которіе вообще есть с єтим именем, а затем в объект one, а затем свойство value или метод value.

для div, span, p никак не поиграешься

Edited by denis_alekss
Link to post
Share on other sites
  • 0
24 минуты назад, denis_alekss сказал:

для div, span, p никак не поиграешься

для них предусмотрены другие способы, например получение по классу, атрибуту и т.д. Если у элемента вообще ничего нет, до него можно добраться через родителей или соседей.

  • Like 1
Link to post
Share on other sites
  • 0

не могу розобратся ПОЧЕМУ НЕ РАБОТАЕТ все правильно 

using namespace std;
 
int main()
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 15; j++)
{
cout << '@';  
}
cout << endl; 
}
return 0;
}
 
Link to post
Share on other sites
  • 0
21 час назад, Огурчик сказал:

не могу розобратся ПОЧЕМУ НЕ РАБОТАЕТ все правильно 

using namespace std;
 
int main()
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 15; j++)
{
cout << '@';  
}
cout << endl; 
}
return 0;
}
 

Вы это в браузере собираетесь выполнить? Этот язык не поддерживается интерпретатором ECMA Script.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Комментарии

    • alert('2' + submit.value) нужно было делать внутри request.onreadystatechange, потому что именно там приходит значение с сервера и задаётся value у submit. И через сколько времени это произойдёт, не всегда известно, может и через минуту, если интернет медленный, поэтому таймаутами универсально не побороть.
    • Я не уверен, что у формы есть событие input, но если даже было бы, то переменные result, num1 и num2 не определены. Они были бы созданы автоматически, если бы это были id, но у тебя-то name. И я не в курсе, сейчас можно писать js-код в атрибутах без javascript: спереди? И есть ли у тега <output> свойство value? Может быть, у него textContent? Подключи Vue, там будет работать так, как ты хочешь, только придётся несколько дополнительных действий сделать, привязывая переменные к инпутам и создавая computed-свойство.
    • В телеграме картинка есть, вконтакт тоже показывает, даже в аське есть. Видимо, ты как-то не так проверяешь.
    • Понял, спасибо большое. Я просто думал, что если выбран класс, то и применяяется только к конкретному классу, а оказывается не правильно думал. Еще раз спасибо
    • Добрый день! Есть такая страница http://tehne.com/grant/right-bank-of-kazanka-river-competition-2021-ru Хочу сделать чтобы в мессенджерах когда отправляют ссылку вместе с заголовком показывалась определенная картинка. Я добавил эту картинку в мета тэги og и link rel="image_src"  и она все равно не появляется когда делюсь в мессенджерах Почему так?  
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.