Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.07.2015, 16:31
Аватар для jack3dm
Аспирант
Отправить личное сообщение для jack3dm Посмотреть профиль Найти все сообщения от jack3dm
 
Регистрация: 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.
Ответить с цитированием
  #12 (permalink)  
Старый 18.07.2015, 18:08
Аватар для Makarov
Профессор
Отправить личное сообщение для Makarov Посмотреть профиль Найти все сообщения от Makarov
 
Регистрация: 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.
Ответить с цитированием
  #13 (permalink)  
Старый 18.07.2015, 18:17
Аватар для jack3dm
Аспирант
Отправить личное сообщение для jack3dm Посмотреть профиль Найти все сообщения от jack3dm
 
Регистрация: 05.04.2015
Сообщений: 52

Makarov,
Я понял как работает. Последовательно, сначала было 3, затем 5, затем 15. Так как изначально у нас в списке стоит 3 то и числу 15 будет присвоено Fizz. Последовательность. Спасибо
Ответить с цитированием
  #14 (permalink)  
Старый 18.07.2015, 18:41
Аватар для Makarov
Профессор
Отправить личное сообщение для Makarov Посмотреть профиль Найти все сообщения от Makarov
 
Регистрация: 08.07.2013
Сообщений: 212

KosBeg,
про "слишком уж учебные задачи".
Конкретно вот это задача дала название целому классу задачек, их обычно так и называют "физзбазз задачки".

Такой тип задач широко применяется на практике в одном конкретном случае.
А случай такой: приходит собеседоваться на программиста какой-нибудь тип, и надо проверить, способен ли он хоть пару строчек кода написать. Резюме как правило верить сильно нельзя, в среднестатистическую контору на собеседование могут прийти какие-нибудь очень странные люди, вроде всяких студентов "с дипломом программиста", которые ничего серьезного в жизни не писали никогда. Такой чувак может обычно очень хорошо заговаривать зубы и иметь впечатляющее выдуманное резюме, но если попросить его решить какую-нибудь очень простую задачку на листочке, то он скорее всего сольется.

То есть физзбазз задачки - это общая проверка на адекватность, что к нам именно программист пришел а не хрен с горы, и если прийти на собеседование в нормальную контору "с улицы", то что-нибудь такое решить предложат.
Ответить с цитированием
  #15 (permalink)  
Старый 18.07.2015, 18:55
Аватар для KosBeg
Профессор
Отправить личное сообщение для KosBeg Посмотреть профиль Найти все сообщения от KosBeg
 
Регистрация: 22.05.2015
Сообщений: 384

Сообщение от Makarov
То есть физзбазз задачки - это общая проверка на адекватность, что к нам именно программист пришел а не хрен с горы
я хрен з горы
Ответить с цитированием
  #16 (permalink)  
Старый 18.07.2015, 19:01
Аватар для Makarov
Профессор
Отправить личное сообщение для Makarov Посмотреть профиль Найти все сообщения от Makarov
 
Регистрация: 08.07.2013
Сообщений: 212

KosBeg,
Ничо, пройдет, все мы ими когда-то были) Тебе 14 лет, в 14 лет это не страшно. Будешь постоянно заниматься программированием - к возрасту когда все твои сверстники будут максимум в макдональдсе работать станешь хорошим спецом
Ответить с цитированием
  #17 (permalink)  
Старый 18.07.2015, 20:42
Аватар для JsConAp
Интересующийся
Отправить личное сообщение для JsConAp Посмотреть профиль Найти все сообщения от JsConAp
 
Регистрация: 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");
Ответить с цитированием
  #18 (permalink)  
Старый 19.07.2015, 09:26
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от Makarov
То есть физзбазз задачки - это общая проверка на адекватность,
Наоборот, это проверка на адекватность работодателя или того придурка, который нанят придурошным работодателем в отдел кадров.

То есть не проверка, а признак. Если вам начинают предлагать порешать физбуз - значит вы вливаетесь в команду недоумков и неадекватов.
Ответить с цитированием
  #19 (permalink)  
Старый 19.07.2015, 09:31
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Например

Сообщение от jack3dm
Напишите программу, которая выводит через console.log все цифры от 1 до 100

Все что так перевел - не прошли, не сдали, уволены без выходного пособия, на пинковой тяге. Ах бл, они же принимают на работу... ну так о чем и базар.
Ответить с цитированием
  #20 (permalink)  
Старый 19.07.2015, 09:42
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 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) учит не программированию, а распознаванию хотелок заказчиков. Типа такой тренинг на бабку Вангу от жабы скрипучей.

Короче, будете учиться на гамнямбах - тому и выучитесь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск