C++練習
テンプレートの練習がてら配列からモード(最頻値)を返すプログラム作ってみた
テンプレート使った汎用関数さえ定義すれば
後はどんな型の引数でも対応できるっていうのは便利なもんですな
#include<iostream> template <class X> X modo(X* start,int size) //モードを求める { int max=0,cnt=0,index; for(int j=0;j<size;j++,cnt=0) { for(int i=j;i<size;i++) { if(start[j] == start[i]) cnt++; } if(max < cnt){ max = cnt; index = j; } } return start[index]; } int main(){ int a[] = {1,32,3,3,2,3,4,23,4}; char b[] = {'a','b','b'}; double c[] = {1.1,1.1,1.2,1.0}; std::cout << modo(a,10)<< std::endl; //int型バージョン std::cout << modo(b,3)<< std::endl; //char型バージョン std::cout << modo(c,4)<< std::endl; //double型バージョン return 0; }