18.07.2015, 16:31
|
|
Аспирант
|
|
Регистрация: 05.04.2015
Сообщений: 52
|
|
Странно. Я этого не понимаю. Если поменять местами ифы то результат будет совершенно другой
Правильный код.
<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, 18.07.2015 в 16:34.
|
|
18.07.2015, 18:08
|
|
Профессор
|
|
Регистрация: 08.07.2013
Сообщений: 212
|
|
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, 18.07.2015 в 18:26.
|
|
18.07.2015, 18:17
|
|
Аспирант
|
|
Регистрация: 05.04.2015
Сообщений: 52
|
|
Makarov,
Я понял как работает. Последовательно, сначала было 3, затем 5, затем 15. Так как изначально у нас в списке стоит 3 то и числу 15 будет присвоено Fizz. Последовательность. Спасибо
|
|
18.07.2015, 18:41
|
|
Профессор
|
|
Регистрация: 08.07.2013
Сообщений: 212
|
|
KosBeg,
про "слишком уж учебные задачи".
Конкретно вот это задача дала название целому классу задачек, их обычно так и называют "физзбазз задачки".
Такой тип задач широко применяется на практике в одном конкретном случае.
А случай такой: приходит собеседоваться на программиста какой-нибудь тип, и надо проверить, способен ли он хоть пару строчек кода написать. Резюме как правило верить сильно нельзя, в среднестатистическую контору на собеседование могут прийти какие-нибудь очень странные люди, вроде всяких студентов "с дипломом программиста", которые ничего серьезного в жизни не писали никогда. Такой чувак может обычно очень хорошо заговаривать зубы и иметь впечатляющее выдуманное резюме, но если попросить его решить какую-нибудь очень простую задачку на листочке, то он скорее всего сольется.
То есть физзбазз задачки - это общая проверка на адекватность, что к нам именно программист пришел а не хрен с горы, и если прийти на собеседование в нормальную контору "с улицы", то что-нибудь такое решить предложат.
|
|
18.07.2015, 18:55
|
|
Профессор
|
|
Регистрация: 22.05.2015
Сообщений: 384
|
|
Сообщение от Makarov
|
То есть физзбазз задачки - это общая проверка на адекватность, что к нам именно программист пришел а не хрен с горы
|
я хрен з горы
|
|
18.07.2015, 19:01
|
|
Профессор
|
|
Регистрация: 08.07.2013
Сообщений: 212
|
|
KosBeg,
Ничо, пройдет, все мы ими когда-то были) Тебе 14 лет, в 14 лет это не страшно. Будешь постоянно заниматься программированием - к возрасту когда все твои сверстники будут максимум в макдональдсе работать станешь хорошим спецом
|
|
18.07.2015, 20:42
|
|
Интересующийся
|
|
Регистрация: 22.02.2015
Сообщений: 24
|
|
Сообщение от jack3dm
|
======
Решение:
|
В одну строку
for(var i=1;101>i;i++)console.log(i%5||i%3?i%3?i%5?i:"Buzz":"Fizz":"FizzBuzz");
|
|
19.07.2015, 09:26
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Сообщение от Makarov
|
То есть физзбазз задачки - это общая проверка на адекватность,
|
Наоборот, это проверка на адекватность работодателя или того придурка, который нанят придурошным работодателем в отдел кадров.
То есть не проверка, а признак. Если вам начинают предлагать порешать физбуз - значит вы вливаетесь в команду недоумков и неадекватов.
|
|
19.07.2015, 09:31
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Например
Сообщение от jack3dm
|
Напишите программу, которая выводит через console.log все цифры от 1 до 100
|
Все что так перевел - не прошли, не сдали, уволены без выходного пособия, на пинковой тяге. Ах бл, они же принимают на работу... ну так о чем и базар.
|
|
19.07.2015, 09:42
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Хорошо, возьмем исходник
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) учит не программированию, а распознаванию хотелок заказчиков. Типа такой тренинг на бабку Вангу от жабы скрипучей.
Короче, будете учиться на гамнямбах - тому и выучитесь.
|
|
|
|