一、问题描述:
实现一个类模板,它可以接受一组数据,能对数据排序,也能输出数组的内容。
每行输入的第一个数字为0,1,2或3:为0时表示输入结束; 为1时表示将输入整数,为2时表示将输入有一位小数的浮点数,为3时表示输入字符。
如果第一个数字非0,则接下来将输入一个正整数,表示即将输入的数据的数量。
从每行第三个输入开始,依次输入指定类型的数据。
类模板:
1 template <class T> 2 class MyArray
裁判测试程序样例:
1 #include <iostream> 2 using namespace std; 3 4 /* 请在这里填写答案 */ 5 6 template<class T> 7 MyArray<T>::~MyArray(){ delete[] data;} 8 9 template<class T> 10 bool MyArray<T>::check(){ 11 int i; 12 for(i=0;i<size-1;i++) 13 if(data[i]>data[i+1]) { cout<<"ERROR!"<<endl;return false;} 14 return true; 15 } 16 int main( ) 17 { 18 MyArray<int> *pI; 19 MyArray<float> *pF; 20 MyArray<char> *pC; 21 int ty, size; 22 cin>>ty; 23 while(ty>0){ 24 cin>>size; 25 switch(ty){ 26 case 1: pI = new MyArray<int>(size); pI->sort(); pI->check(); pI->display(); delete pI; break; 27 case 2: pF = new MyArray<float>(size); pF->sort(); pF->check(); pF->display(); delete pF; break; 28 case 3: pC = new MyArray<char>(size); pC->sort(); pC->check(); pC->display(); delete pC; break; 29 } 30 cin>>ty; 31 } 32 return 0; 33 }
输入样例:
1 3 2 3 1 2 4 1.5 2.6 3.7 0.5 3 2 A a 0
输出样例:
1 2 3 0.5 1.5 2.6 3.7 A a
二、代码实现:
1 template<class T> 2 class MyArray{ 3 private: 4 int size; 5 T *data; 6 public: 7 MyArray(int n) 8 { 9 size=n; 10 data= new T[size]; 11 for(int i=0;i<size;i++) 12 cin>>data[i]; 13 } 14 ~MyArray(); 15 void sort()//从小到大排序 16 { 17 for(int i=0;i<size-1;i++) 18 for(int j=i+1;j<size;j++) 19 { 20 if(data[i]>data[j]) 21 { 22 T p; 23 p=data[i]; 24 data[i]=data[j]; 25 data[j]=p; 26 } 27 } 28 } 29 void display()//输出 30 { 31 for(int i=0;i<size-1;i++) 32 { 33 cout<<data[i]<<" "; 34 } 35 cout<<data[size-1]<<endl; 36 } 37 bool check(); 38 };
标签:数组,int,MyArray,pC,pF,有序,data,模板,size From: https://www.cnblogs.com/tljx-cen/p/17363109.html