Странно. Я этого не понимаю. Если поменять местами ифы то результат будет совершенно другой
Правильный код. <script> var num = 1; for ( ; num < 100; num++ ) { if ( num % 5 === 0 && num % 3 === 0 ){ document.write( num, " = FizzBuzz <br />" ) }else if ( num%5 === 0 ){ document.write( num, " = Buzz <br />" ); }else if ( num%3 === 0 ){ document.write( num, " = Fizz <br/ >" ); }else{ document.write( num, "<br/ >" ); } } </script> А если поменять местами ифы то FizzBuzz не видно... <script> var num = 1; for( ; num <= 100; num++ ){ if( num%3 === 0 ){ document.write( num, " = Fizz <br/ >" ); }else if ( num%5 === 0 ){ document.write( num, " = Buzz <br />" ); }else if ( num % 5 === 0 && num % 3 === 0 ){ document.write( num, " = FizzBuzz <br />" ); }else{ document.write( num, "<br/ >" ); } } </script> Как же это влияет? Как это работает? Почему месторасположение так важно? |
jack3dm,
потому что это два разных алгоритма очевидно. Пусть ваше число равно скажем 15. Куда оно придет во втором случае и куда должно по условиям? Код в большинстве случаев выполняется последовательно, это раз. Конструкция if(проверка){что-нибудь} else {еще что-нибудь} он в else не зайдет если проверка выполнена, это два Ну и в третьих, чтобы было понятнее, добавлю пару незначащих скобочек и табов в правильный код и в ваш: var num = 1; for ( ; num < 100; num++ ) { if ( num % 5 === 0 && num % 3 === 0 ){ document.write( num, " = FizzBuzz <br />" ) } else { if ( num%5 === 0 ){ document.write( num, " = Buzz <br />" ); } else { if ( num%3 === 0 ){ document.write( num, " = Fizz <br/ >" ); } else { document.write( num, "<br/ >" ); } } } } var num = 1; for( ; num <= 100; num++ ){ if( num%3 === 0 ){ document.write( num, " = Fizz <br/ >" ); } else { if (num % 5 === 0) { document.write(num, " = Buzz <br />"); } else { if (num % 5 === 0 && num % 3 === 0) { document.write(num, " = FizzBuzz <br />"); } else { document.write(num, "<br/ >"); } } } } |
Makarov,
Я понял как работает. Последовательно, сначала было 3, затем 5, затем 15. Так как изначально у нас в списке стоит 3 то и числу 15 будет присвоено Fizz. Последовательность. Спасибо |
KosBeg,
про "слишком уж учебные задачи". Конкретно вот это задача дала название целому классу задачек, их обычно так и называют "физзбазз задачки". Такой тип задач широко применяется на практике в одном конкретном случае. А случай такой: приходит собеседоваться на программиста какой-нибудь тип, и надо проверить, способен ли он хоть пару строчек кода написать. Резюме как правило верить сильно нельзя, в среднестатистическую контору на собеседование могут прийти какие-нибудь очень странные люди, вроде всяких студентов "с дипломом программиста", которые ничего серьезного в жизни не писали никогда. Такой чувак может обычно очень хорошо заговаривать зубы и иметь впечатляющее выдуманное резюме, но если попросить его решить какую-нибудь очень простую задачку на листочке, то он скорее всего сольется. То есть физзбазз задачки - это общая проверка на адекватность, что к нам именно программист пришел а не хрен с горы, и если прийти на собеседование в нормальную контору "с улицы", то что-нибудь такое решить предложат. |
Цитата:
|
KosBeg,
Ничо, пройдет, все мы ими когда-то были) Тебе 14 лет, в 14 лет это не страшно. Будешь постоянно заниматься программированием - к возрасту когда все твои сверстники будут максимум в макдональдсе работать станешь хорошим спецом |
Цитата:
for(var i=1;101>i;i++)console.log(i%5||i%3?i%3?i%5?i:"Buzz":"Fizz":"FizzBuzz"); |
Цитата:
То есть не проверка, а признак. Если вам начинают предлагать порешать физбуз - значит вы вливаетесь в команду недоумков и неадекватов. |
Например
Цитата:
Все что так перевел - не прошли, не сдали, уволены без выходного пособия, на пинковой тяге. Ах бл, они же принимают на работу... ну так о чем и базар. |
Хорошо, возьмем исходник
Write a program that uses console.log to print all the numbers from 1 to 100, with two exceptions. For numbers divisible by 3, print “Fizz” instead of the number, and for numbers divisible by 5 (and not 3), print “Buzz” instead. When you have that working, modify your program to print “FizzBuzz”, for numbers that are divisible by both 3 and 5 (and still print “Fizz” or “Buzz” for numbers divisible by only one of those). и типа правильный перевод FizzBuzz. Напишите программу, которая выводит через console.log все числа от 1 до 100, с двумя исключениями. Для чисел, нацело делящихся на 3, она должна выводить ‘Fizz’, а для чисел, делящихся на 5 (но не на 3) – ‘Buzz’.Когда сумеете – исправьте её так, чтобы она выводила «FizzBuzz» для всех чисел, которые делятся и на 3 и на 5. чтобы задать вопрос: какой недоумок пишет такую документацию? Вот так пишут Напишите программу, которая выводит через console.log все числа от 1 до 100 по следующим правилам. 1) Все числа кратные 3 заменить на текст ‘Fizz’ 2) Все числа кратные 5 (но не кратные 3) заменить на текст ‘Buzz’. 3) Иначе вывести число. Правильно сформулировал? Тогда вопрос - зачем автор баяна формулирует хуйдожественными екивоками? Варианты: 1) автор - тупой, 2) учит не программированию, а распознаванию хотелок заказчиков. Типа такой тренинг на бабку Вангу от жабы скрипучей. Короче, будете учиться на гамнямбах - тому и выучитесь. |
Часовой пояс GMT +3, время: 10:25. |