C#でFizzBuzz問題を解くプログラムの作成方法
FizzBuzzは、プログラミング学習の定番として知られる古典的な問題です。ルールは以下の通りです。
- 3の倍数の場合は、数値の代わりに「Fizz」と表示する
- 5の倍数の場合は、数値の代わりに「Buzz」と表示する
- 3と5の両方の倍数(つまり15の倍数)の場合は、数値の代わりに「FizzBuzz」と表示する
それ以外の数値は、そのまま表示します。このルールに従って、1から100までの数値を順番に出力していくのがFizzBuzz問題です。
この問題を解くポイントは、条件分岐の判定順序です。「3と5の両方の倍数」のチェックを最初に行わないと、3の倍数の条件が先に一致してしまい、「FizzBuzz」ではなく「Fizz」が表示されてしまいます。
C#での実装例
以下のコードは、forループとif-else文を使ってFizzBuzzを実装したC#プログラムです。
using System;
class Demo {
static void Main(String[] args) {
for(int i = 1; i <= 100; i++) {
if((i % 3 == 0) && (i % 5 == 0))
Console.WriteLine("FizzBuzz\n");
else if(i % 3 == 0)
Console.WriteLine("Fizz\n");
else if(i % 5 == 0)
Console.WriteLine("Buzz\n");
else
Console.WriteLine(i);
}
}
}コードの解説
1. ループ処理
forループで変数iを1から100まで1ずつ増やしながら処理を繰り返します。
2. 条件分岐の順序
まず(i % 3 == 0) && (i % 5 == 0)で、iが3と5の両方で割り切れるか(15の倍数か)を判定します。剰余演算子%は、割り算の余りを求める演算子で、余りが0なら割り切れることを意味します。
3. 出力結果
このプログラムを実行すると、以下のような出力が得られます。
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz ...
15の倍数である15、30、45…では「FizzBuzz」が、それ以外の3の倍数では「Fizz」が、5の倍数では「Buzz」が正しく表示されていることが確認できます。
まとめ
FizzBuzzは一見シンプルな問題ですが、条件分岐の順序や論理演算子の使い方など、プログラミングの基礎が詰まった良い練習題材です。ぜひ自分でもコードを書いて、動作を確かめてみてください。
-
C言語で配列を逆順に反転させるプログラムの書き方
配列とは、共通の名前のもとで管理される、関連性のあるデータ項目の集まりのことです。同じ型の複数の値を効率的に扱いたい場合に活用されます。配列の宣言構文C言語で配列を宣言する際の基本的な構文は以下のとおりです。データ型 配列名 [サイズ];配列の初期化配列は、宣言と同時に初期化することもできます。int a[5] = { 10,20,30,40,50};この例では、整数型の配列 a の5つの要素に、それぞれ10から50までの値が順番に格納されています。C言語で配列を逆順にする方法配列の要素を逆順に並べ替えるには、要素の入れ替え(スワップ)やコピーのテクニックを利用します。たとえば、4つの要素を持
-
C++で解くピーターセングラフのウォーク問題:文字列を実現する辞書順最小の経路を求める
問題の概要下図のようなグラフを考えます。これは有名なピーターセングラフです。頂点には0から9までの番号が振られており、各頂点には特定の文字が割り当てられています。このグラフ上のウォーク(歩行)Wを考えます。WはL個の頂点を使用します。長さLの文字列SがウォークWによって実現されるとは、Wで訪問した頂点に割り当てられた文字の並びがSと一致することを指します。なお、同じ頂点を何度訪問しても構いません。例えば、文字列Sが「ABBECCD」の場合、これはウォーク(0, 1, 6, 9, 7, 2, 3)によって実現されます。私たちのタスクは、与えられた文字列を実現するウォークを見つけることです。そのよ