【初心者向け】C++で文字が母音か子音かを判定するプログラムの書き方
母音と子音とは?
アルファベットにおける母音(Vowel)とは、「a」「e」「i」「o」「u」の5つの文字を指します。そして、これら以外のすべてのアルファベットは子音(Consonant)と呼ばれます。
本記事では、C++を使って任意の1文字が母音なのか子音なのかを判定するプログラムの書き方を、初心者にもわかりやすく解説します。
基本形:小文字のみに対応した判定プログラム
まずは最もシンプルな例として、小文字のアルファベット1文字が母音か子音かを判定するプログラムを見てみましょう。
サンプルコード
#include <iostream>
using namespace std;
int main() {
char c = 'a';
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
cout << c << " is a Vowel" << endl;
else
cout << c << " is a Consonant" << endl;
return 0;
}実行結果
a is a Vowel
プログラムの解説
このプログラムでは、if文と論理OR演算子(||)を使って、変数cに格納された文字が「a」「e」「i」「o」「u」のいずれかに一致するかどうかを順番に比較しています。
該当する文字が1つでも見つかれば母音と判断され、どれにも一致しなければ子音と判断されます。該当する条件分岐の部分を抜き出すと、次のようになります。
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
cout << c << " is a Vowel" << endl;
else
cout << c << " is a Consonant" << endl;発展形:大文字・小文字の両方に対応させる
先ほどのプログラムには1つ注意点があります。それは、小文字しか判定できないという点です。たとえば「A」や「E」といった大文字の母音を渡すと、誤って子音として判定されてしまいます。
そこで、大文字の母音(A、E、I、O、U)も条件に追加して、大文字・小文字の両方に正しく対応させたプログラムを作成しましょう。
サンプルコード
#include <iostream>
using namespace std;
int main() {
char c = 'B';
if (c == 'a' || c == 'e' || c == 'i' ||
c == 'o' || c == 'u' || c == 'A' ||
c == 'E' || c == 'I' || c == 'O' || c == 'U')
cout << c << " is a Vowel" << endl;
else
cout << c << " is a Consonant" << endl;
return 0;
}実行結果
B is a Consonant
このプログラムでは、if文の条件式に大文字の母音5種類を追加しています。これにより、入力された文字が大文字・小文字のいずれであっても、正しく母音か子音かを判定できるようになりました。
さらにスマートな書き方:tolower関数を活用する
条件式が長くなりがちな場合には、<cctype>ヘッダーのtolower()関数を使うとコードをすっきりさせられます。この関数は、大文字を小文字に変換してくれるため、条件式を小文字の母音だけにまとめられます。
#include <iostream>
#include <cctype>
using namespace std;
int main() {
char c = 'B';
char lower = tolower(c); // 大文字なら小文字へ変換
if (lower == 'a' || lower == 'e' || lower == 'i' ||
lower == 'o' || lower == 'u')
cout << c << " is a Vowel" << endl;
else
cout << c << " is a Consonant" << endl;
return 0;
}このように書くことで、条件式が短くなり、可読性と保守性が向上します。実務ではこちらのアプローチが好まれることも多いので、ぜひ覚えておきましょう。
まとめ
- 母音は「a、e、i、o、u」の5文字、それ以外はすべて子音である。
if文と||演算子を組み合わせることで、文字が母音かどうかを簡単に判定できる。- 大文字・小文字の両方に対応するには、大文字の母音を条件に追加するか、
tolower()関数で統一的に扱うのが便利。
C++における文字判定の基本となる処理なので、しっかり理解しておきましょう。
-
【C++】無向グラフにオイラー路が存在するかどうかを判定する方法
オイラー路(Euler Path)とは、グラフ上のすべての辺をちょうど1回ずつ通る経路のことです。途中で同じ頂点を何度訪れることは許されますが、同じ辺を2回以上使うことはできません。 また、オイラー閉路(Euler Circuit)はオイラー路の特殊なケースで、経路の始点と終点が同じ頂点でつながっているものを指します。 オイラー路が存在するための条件 無向グラフにオイラー路が存在するかどうかは、次の条件で判定できます。 グラフが連結であること 奇数次数の頂点が0個の場合:オイラー閉路が存在します。オイラー閉路はオイラー路の一種でもあります。 奇数次数の頂点がちょうど2個の場合:オイラー路が存
-
無向グラフにオイラー閉路が含まれるかどうかを判定するC++プログラム
オイラー閉路(Euler Circuit)について学ぶには、まずオイラー路(Euler Path)という概念を理解しておく必要があります。オイラー路とは、グラフ内のすべての辺をちょうど一度ずつ通過できる経路のことであり、同じ頂点を複数回通ることは許されます。オイラー閉路は、オイラー路の特別なケースです。オイラー路の始点となる頂点が、そのまま終点の頂点にも接続されており、経路が一つの閉じた周回路となっているものを指します。オイラー閉路の判定条件無向グラフがオイラー閉路を持つかどうかを調べるには、次の2つの条件を確認します。グラフが連結であること ── すべての頂点が辺を介して互いに到達可能である