2017-08-03 11 views
-8

私はfizzbuzzのC++ switch文を作成できるかどうかを確認しようとしています。私は、私がconst式で使用できないというエラーが出てきます。それは私がこのことを働かせることができないことを意味しますか?または、回避策がありますか?ここに私のコードです。C++ fizzbuzz switch文?

#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; 
     } 
    } 
} 
+9

あなたは 'switch'がどのように動作するか再考する必要があります:http://en.cppreference.com/w/cpp/language/switch – NathanOliver

+3

そのように' switch'/'case'を使うことはできません。代わりに 'if'、' else if'を使用してください。 – user0042

+8

まず、良いC++の本を読む必要があると思います。このコードには多くの誤りがあります。 – UnholySheep

答えて

5

あなたが本当にスイッチ/ケースを使いたいなら、あなたはこのようにそれを行うことが:

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;; 
} 
+0

' default'の場合、質問にあるように 'cout << i << endl;'にする必要があります。 –

+0

@AlgirdasPreidžius:ありがとう - 固定。 –

+0

ありがとう、私はあなたが示したことによって間違っていたことを得る。それがどのように動作するのか興味深く、私はそれを感謝します。 –

0

あなたはスイッチ/ケースを使用しているかとの根本的な問題がいくつかあります。

期待される方法は、switchが変数または式を参照することです。その後、caseセクションは定数値を参照します。

代わりに、コンパイルしても意味をなさないswitch(true)です。これはswitch(1)に相当します。その場合、case 1:のみが適用されます。

caseの式は使用できません。これらは整数値でなければなりません。例えば、case 0:の単純な整数か、一般にプリプロセッサの定義はcase FIZZBUZZ:です。

0

コメントに記載されているとおり、ifのような文を複数回使用すると、いつもswitch()という文が使用できるとは限りません。私はあなたが最も助けになるとは思わないので、あなたに正しい答えを与えるつもりはありません。
1)の代わりにあなたがifelse if、およびelseステートメントを使用する必要がありますスイッチ:

は、ここではいくつかの注意事項があります。
2)C++ではand&&ない&
3のように表現される)forループはあなたはそれが重要であり、あなたがこれらの基本を理解してC++をコーディングする方法についていくつかの簡単なチュートリアルを読む/見るべきですfor(int i = 0; i <= 100; i++)

のように宣言されています。

+0

私はif else文を使う方法を知っていて、ただ創造しようとしていただけです。 –

+0

@DanielArchuletaあなたがしようとしているものに最も適したものを使いましょう。あなたがそれを使用しようとしているのであれば、スイッチは創造的ではありません。 –

+0

私が見たいと思っているのは、switch文を使うことができるかどうかということでした。あなたが知っている楽しみのために、私は何も使っていません。 –