实验13-函数模版与类模版-
题目描述
某小镇要票选镇长,得票最高者当选。但由于投票机制不健全,导致每届投票时,候选人在投票系统的识别码类型不一致。请编写函数模板,能针对多种类型的数据,查找出得票最高的元素。其中,每届投票的选票有n张,识别码类型为T
注意:必须使用模板函数
输入
第一行输入t表示有t个测试实例
第二行先输入一个大写字母表示识别码类型,I表示整数类型,C表示字符型,S表示字符串型;然后输入n表示数组长度。
第三行输入n个数据
依次输入t个实例
输出
每行输出一个结果,分别输出当选者的识别码和得票数,以空格分开。
输入样例
3
I 10
5 3 5 2 9 7 3 7 2 3
C 8
a b a e b e e q
S 5
sandy david eason cindy cindy
输出样例
3 3
e 3
cindy 2
#include<iostream>
using namespace std;
template<class Type>
class list
{
Type *a;
int len;//长度
int max;
Type Max;
public:
list(){}
list(int l,Type *t)
{
int i,j;
len=l;
a=new Type[len];
int *sum=new int[len];
for(i=0;i<len;i++)
{
a[i]=t[i];
sum[i]=0;
}
for(i=0;i<len;i++)
for(j=0;j<len;j++)
if(a[i]==t[j])
sum[i]++;
max=-1;
Max=a[0];
for(i=0;i<len;i++)
{
if(sum[i]>max)
{
max=sum[i];
Max=a[i];
}
}
delete []sum;
}
void print()
{
cout<<Max<<" "<<max<<endl;
}
~list()//不析构不给分
{
delete []a;
}
};
int main()
{
int t,n,i;
string type;
cin>>t;
while(t--)
{
cin>>type>>n;
if(type=="I")//int
{
int *a=new int[n];
for(i=0;i<n;i++)
cin>>a[i];
list<int> L(n,a);
L.print();
delete []a;
}
else if(type=="C")//char
{
char *a=new char[n];
for(i=0;i<n;i++)
cin>>a[i];
list<char> L(n,a);
L.print();
delete []a;
}
else if(type=="S")//string
{
string *a=new string[n];
for(i=0;i<n;i++)
cin>>a[i];
list<string> L(n,a);
L.print();
delete []a;
}
}
return 0;
}