C++で文字列内の文字の出現頻度を求めるプログラム
文字列と文字の頻度とは
文字列とは、NULL文字('\0')で終端される1次元の文字配列のことです。文字列における「文字の頻度」とは、特定の文字がその文字列の中に何回出現するかを表す数値です。例えば、以下のようになります。
文字列: Football is a sport
上記の文字列に含まれるアルファベット「o」の頻度は3
特定の文字の頻度を求めるプログラム
特定のアルファベットの出現回数を求めるプログラムは、以下のとおりです。
例
#include <iostream>
using namespace std;
int main() {
char str[100] = "this string contains many alphabets";
char c = 'a';
int count = 0;
for(int i = 0; str[i] != '\0'; i++) {
if(str[i] == c)
count++;
}
cout<<"Frequency of alphabet "<<c<<" in the string is "<<count;
return 0;
}
出力
Frequency of alphabet a in the string is 4
プログラムの解説
このプログラムでは、forループを使って、指定された文字列内のアルファベット「a」の頻度を求めています。ループ内で str[i] が対象の文字と一致した場合、count を1ずつ増加させます。最後に、この count の値が文字の頻度として出力されます。該当するコード部分は以下のとおりです。
for(int i = 0; str[i] != '\0'; i++) {
if(str[i] == c)
count++;
}
cout<<"Frequency of alphabet "<<c<<" in the string is "<<count;すべての文字の頻度を求めるプログラム
続いて、文字列内のすべてのアルファベットの出現回数を求めるプログラムを紹介します。
例
#include <iostream>
using namespace std;
int main() {
char str[100] = "this string contains many alphabets";
int i = 0, alphabet[26] = {0}, j;
while (str[i] != '\0') {
if (str[i] >= 'a' && str[i] <= 'z') {
j = str[i] - 'a';
++alphabet[j];
}
++i;
}
cout<<"Frequency of all alphabets in the string is:"<<endl;
for (i = 0; i < 26; i++)
cout<< char(i + 'a')<<" : "<< alphabet[i]<< endl;
return 0;
}
出力
Frequency of all alphabets in the string is:
a : 4
b : 1
c : 1
d : 0
e : 1
f : 0
g : 1
h : 2
i : 3
j : 0
k : 0
l : 1
m : 1
n : 4
o : 1
p : 1
q : 0
r : 1
s : 4
t : 4
u : 0
v : 0
w : 0
x : 0
y : 1
z : 0
プログラムの解説
このプログラムでは、whileループを使って文字列内のすべてのアルファベットの頻度を求めています。配列 alphabet[] に各アルファベットの頻度を格納します。変数 j にはアルファベットに対応する数値(a は 0、b は 1、というように)が格納され、その値をインデックスとして alphabet 配列の該当要素が1ずつ増やされます。この処理を示したコードが以下のとおりです。
while (str[i] != '\0') {
if (str[i] >= 'a' && str[i] <= 'z') {
j = str[i] - 'a';
++alphabet[j];
}
++i;
}文字列全体の走査が完了した後、各アルファベットの頻度が出力されます。以下にその部分を示します。
cout<<"Frequency of all alphabets in the string is:"<<endl;
for (i = 0; i < 26; i++)
cout<< char(i + 'a')<<" : "<< alphabet[i]<< endl;
-
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 解決アプローチ この問題を解くには、平行四辺形の面積を求める幾何学の公式を使用します。 面積 = 底辺 × 高さ つまり、与えられた底辺と高さを掛け合わせ