【C++】名前からイニシャルを抽出するプログラムの作成方法
このプログラムでは、人物の名前を表す文字列 name が与えられます。私たちの課題は、C++を使ってその名前からイニシャル(頭文字)を抽出するプログラムを作成することです。
コードの概要 − 文字列として渡された名前の中から、各単語の頭文字だけを取り出して表示します。
問題を理解するための具体例を見てみましょう。
入力
name = "ram kisan saraswat"
出力
R K S
説明
名前に含まれるすべての単語の最初の文字を抽出し、それらをイニシャルとして出力します。上記の例では、「ram」「kisan」「saraswat」という3つの単語それぞれの頭文字「R」「K」「S」が結果となります。
解決アプローチ
この問題に対するシンプルな解決策は、名前の文字列を先頭から順に走査することです。スペース文字または改行文字の直後に現れる文字が各単語の頭文字にあたるため、その文字を大文字に変換して出力すればよいのです。
ソリューションの動作を示すサンプルプログラム
コード例
#include <iostream>
using namespace std;
void findNameInitials(const string& name) {
cout<<(char)toupper(name[0]);
for (int i = 0; i < name.length() - 1; i++)
if(name[i] == ' ' || name[i] == '\n')
cout << " " << (char)toupper(name[i + 1]);
}
int main() {
string name = "ram kisan\nsaraswat";
cout<<"The initials of the name are ";
findNameInitials(name);
return 0;
}
出力
The initials of the name are R K S
コードのポイント解説
- 最初の文字の処理:
toupper()関数を使用して、名前の先頭文字を必ず大文字に変換して出力します。 - ループによる走査: for文で文字列を1文字ずつ確認し、スペース(
' ')または改行文字('\n')を検出した場合、その直後の文字を大文字に変換して出力します。 - 柔軟な対応: スペース区切りだけでなく、改行で区切られた名前にも対応できるのが特徴です。
なお、実際の運用では名前の先頭や末尾に余分な空白が含まれるケースも考えられるため、必要に応じて前処理(トリミング処理)を追加すると、より堅牢なプログラムになります。
-
C++で三角形の重心を求めるプログラムの作成方法
この記事では、三角形の3つの頂点の座標を格納した2次元配列が与えられたときに、その三角形の重心を求めるC++プログラムの作成方法を解説します。 三角形の重心とは、三角形の3本の中線がすべて交わる点のことです。 また、三角形の中線とは、ある頂点と、その対辺(向かい合う辺)の中点を結ぶ線分のことを指します。 それでは、具体的な例を使って問題を確認してみましょう。 入力 (-3, 1), (1.5, 0), (-3, -4) 出力 (-1.5, -1) 説明 重心 (x, y) = ((-3 + 1.5 - 3) / 3, (1 + 0 - 4) / 3) = (-1.5, -1) 解法のアプロ
-
C++で平行四辺形の面積を求めるプログラムの作成方法
この記事では、平行四辺形の底辺と高さを表す2つの値が与えられたとき、C++を使ってその面積を求めるプログラムを作成する方法を解説します。 平行四辺形とは? 平行四辺形とは、4つの辺からなる閉じた図形であり、向かい合う2組の辺がそれぞれ長さが等しく、互いに平行になっている四角形のことです。 問題を理解するための具体例 入力 B = 20, H = 15 出力 300 説明 平行四辺形の面積 = 底辺 × 高さ = 20 × 15 = 300 解決アプローチ この問題を解くには、平行四辺形の面積を求める幾何学の公式を使用します。 面積 = 底辺 × 高さ つまり、与えられた底辺と高さを掛け合わせ