
Сообщение от
Shiny
Напишите программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово Fizz, а вместо чисел, кратных пяти — слово Buzz. Если число кратно пятнадцати, то программа должна выводить слово FizzBuzz.Задача может показаться очевидной, но нужно получить наиболее простое и красивое решение
Задача действительно очевидная, а требование "простоты и красоты" переводит её в рубрику "угадай, что нравится автору". Быть может, требуется соблюдать определенные стандарты в оформлении кода?
Можно ли придумать что-либо проще и очевиднее, чем вариант от shurik-ua выше? Сомневаюсь. А именно понятность кода для коллег является одним из главных качеств программиста, которые хотят видеть работодатели.
По эффективности где-то можно оптимизировать. Скорость или, там, место в памяти. И это будет сильно зависеть от целевой архитектуры.
Скажем, если процессор не имеет аппаратного деления или, если деление медленное - то имеет право на жизнь такой вариант:
Код:
#include <stdio.h>
void main(void)
{
int r3=1;
int r5=1;
for(int i=1; i<=100; i++)
{
if(r3==3)
{
r3=0;
printf("Fizz");
}
if(r5==5)
{
r5=0;
printf("Buzz");
}
if(r3 || r5)
{
printf("%d",i);
}
putchar('\n');
r3++;
r5++;
}
}
Но даже и здесь насчет эффективности можно поспорить, т.к. вывод на консоль почти на всех архитектурах (даже Z80) существенно медленнее, чем деление.