楽しんだ者勝ち~就活を終えて伝えたいこと~

MENU

【C言語】Billy Joel-Piano Manにおけるアルファベットの頻出度を調べてみた

はじめに

ここでは、任意の文字列を読み込み、個数を調べるコードに手を加えたコードを紹介しています。(詳しくはこちらを見て下さい)行ったことは、個人的に大好きな曲「Piano Man」におけるアルファベットの頻出度の調査です。参考にした歌詞はyoutubeで1番上にヒットした動画です。

 

コード

 

#include <stdio.h>
#define NUM 10000
/* 関数の宣言 */
int search(char str[]);

int main(void){

 FILE *fp;
 char str[NUM];
 int ans;

 fp = fopen("pianoman_moji.txt","r");
 if(fp == NULL){
   printf("FileをOpenできませんでした。\n");
   return 1;
 }
 else{
   printf("*****FileをOpenしました。*****\n" );
 }
 fgets(str,NUM-1,fp);

 printf("-----文字列は以下の通り-----\n");
 printf("%s\n", str);

 ans = search(str);

 printf("iは%d個あります。\n", ans);

 return 0;
}


/* 関数の定義 */
int search(char str[]){
 int c,i;

 c = 0;
 for (i = 0; str[i] != '\0'; i++) {
   if(str[i] == 'Z'){
     c++;
   }
 }
 return c;
}

 

 

具体的に行ったこと

 小文字a~zと大文字a~zに別けて頻度を調べました。ピリオドやシングルクォートなどの文字はカウントしていません。

 

結果

 グラフにしたものを以下に示します。

f:id:mottobungaku:20191013223254p:plain



 eが1番多く頻出していることが分かります。次にaが多い結果となっています。ここで他のサイトを見てみます。調べた結果と比較するとe,a,o,tの頻出が多いことが分かります。
 面白いことにe,aが多いのは、英単語の特徴なのかもしれませんね。ただ、比較した結果は歌詞とNewsなのでイマイチですが。
 

最後に

 好きな曲の要素解析?みたいなことをしてみました。実際は要素解析とは言えないですが。それでも歌詞を調べるのは面白いですね。
 これからもちょくちょく調べていきたいと思います。

 コード的には問題が多いので、こちらもアップデートしていきたいと思います。a~zを自動化させたりとか。