Я пытаюсь понять, смогу ли я сделать оператор переключения fizzbuzz c ++. Я получаю сообщение об ошибке, в котором говорится, что меня нельзя использовать в выражении const. Значит ли это, что я не могу заставить эту вещь работать? Или есть работа вокруг? Вот мой код
#include <iostream>
using namespace std;
int main() {
for(int = 1; 1 <= 100; i++){
switch(true){
case(i % 3 == 0 & i % 5 == 0):
cout << "fizzbuzz" << endl;
break;
case(i % 3 == 0):
cout << "fizz" << endl;
break;
case(i % 5 == 0):
cout << "fizz" << endl;
break;
default:
cout << i << endl;
}
}
}
Если вы действительно хотите использовать switch / case, вы можете сделать это так:
switch (i % 15)
{
case 0 : cout << "fizzbuzz\n"; break;
case 5:
case 10: cout << "buzz\n"; break;
case 3:
case 6:
case 9:
case 12: cout << "fizz\n"; break;
default: cout << i << "\n"; break;;
}
Как указано в комментариях, несколько раз вы не всегда можете использовать switch()
утверждение как if
заявление и есть несколько других проблем с вашим кодом. Я не собираюсь давать вам правильный ответ, так как не верю, что это поможет вам больше всего.
Вот некоторые заметки:
1) Вместо переключателя следует использовать if
, else if
, а также else
заявления.
2) В C ++ and
выражается как &&
не &
3) А for
цикл объявлен как for(int i = 0; i <= 100; i++)
Вы должны посмотреть / прочитать несколько простых руководств о том, как кодировать C ++, так как важно, чтобы вы понимали эти основы.
Есть несколько фундаментальных проблем с тем, как вы используете switch / case.
Ожидаемый способ использовать это, чтобы иметь switch
обратиться к переменной или выражению, то case
разделы относятся к постоянным значениям.
Вместо этого вы делаете switch(true)
который не имеет никакого смысла, даже если он компилируется. Это эквивалентно switch(1)
, Так что только в этом случае case 1:
будет применяться
Вы не можете использовать выражения для case
, Это должны быть постоянные целочисленные значения. Так, например, вы можете либо простые целые числа case 0:
или также обычно предварительный процессор определяет case FIZZBUZZ:
,