Показать сообщение отдельно
Старый 16.09.2013, 16:49   #12  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Цитата:
Сообщение от mazzy Посмотреть сообщение
Если честно, то чудовищная реализация, на мой взгляд.
Избыточное вычисление mod и куча лишнего кода.

с точки зрения вычислений лучше уж так.

X++:
#define.FIZZ(3)
#define.BUZZ(5)
static void FizzBuzzImpl(Args _args)
{
    int i;
    str fizz;
    str buzz;
    ;

    for (i = 1; i <=100; i++)
    {
        fizz = ((i mod #FIZZ) == 0) ? "Fizz" : "";
        buzz = ((i mod #BUZZ) == 0) ? "Buzz" : "";
        if( fizz || buzz )
        {
            info(strfmt("%1%2 %3", fizz, buzz, i));
        }
    }
}
можно было бы отказаться и от переменных fizz, buzz. Но код стал бы менее читаемым.

Вот только результат не совпадает с указанным в задании. Считаю, что тест по выявлению "не умеющих писать код" работает как надо.

Задание

Цитата:
Напишите программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово «Fizz», а вместо чисел, кратных пяти — слово «Buzz». Если число кратно и 3, и 5, то программа должна выводить слово «FizzBuzz»
Результат
Цитата:
Fizz 3
Buzz 5
Fizz 6
Fizz 9
Buzz 10
Fizz 12
FizzBuzz 15
Fizz 18
Buzz 20
Fizz 21
Fizz 24
Buzz 25
Fizz 27
FizzBuzz 30
Fizz 33
Buzz 35
Fizz 36
Fizz 39
Buzz 40
Fizz 42
FizzBuzz 45
Fizz 48
Buzz 50
Fizz 51
Fizz 54
Buzz 55
Fizz 57
FizzBuzz 60
Fizz 63
Buzz 65
Fizz 66
Fizz 69
Buzz 70
Fizz 72
FizzBuzz 75
Fizz 78
Buzz 80
Fizz 81
Fizz 84
Buzz 85
Fizz 87
FizzBuzz 90
Fizz 93
Buzz 95
Fizz 96
Fizz 99
Buzz 100
За это сообщение автора поблагодарили: mazzy (5).