1. 程式人生 > >(考試)2017年大一下學期C++期末考試題目五

(考試)2017年大一下學期C++期末考試題目五

4005:類模板

Problem Description
定義一個類模板,包括一個由小到大排列的資料序列,資料元素個數等資料成員,以及建構函式、輸出函式和刪除函式等成員函式。其中,刪除函式用來刪除資料系列中相同的資料。

Input
輸入資料有多組,每組佔3行, 第一行是整數,第二行是實數,第三行是字元。每行的第一個數是整數,表示元素個數。

Output
對於每組輸入資料,輸出佔3行,每行輸出刪除相同元素後剩下的元素,每個元素後都帶有1個空格。具體見輸出樣例。

Sample Input

5 1 2 2 3 5
6 2.4 2.4 3.3 3.3 4 6
8 aabbccdd

Sample Output

1 2 3 5 
2.4 3.3 4 6 
a b c d

心得

送分題,主要考察了類模板的簡單應用,可以參考MNNUOJ的8079.

答案

#include <iostream>
#include <cstring>
using namespace std;
template<class T>
class array
{
private:
    int length;
    T *arr;
public:
    array(int length,T *s):length(length)
    {
        arr=new
T[length]; for(int i=0;i<length;i++) arr[i]=s[i]; } void show() { for(int i=0;i<length;i++) cout<<arr[i]<<" "; cout<<endl; } void clear() { int top=0; T *newArr=new T[length]; for(int
i=0;i<length-1;i++) { if(arr[i]!=arr[i+1]) newArr[top++]=arr[i]; } if(newArr[top-1]!=arr[length-1]) newArr[top++]=arr[length-1]; length=top; arr=newArr; } ~array() { delete[] arr; } }; int main() { int n,*a1; double *a2; char *a3; while(cin>>n) { a1=new int[n]; for(int i=0;i<n;i++) cin>>a1[i]; array<int> t1(n,a1); t1.clear(); t1.show(); cin>>n; a2=new double[n]; for(i=0;i<n;i++) cin>>a2[i]; array<double> t2(n,a2); t2.clear(); t2.show(); cin>>n; a3=new char[n]; for(i=0;i<n;i++) cin>>a3[i]; array<char> t3(n,a3); t3.clear(); t3.show(); delete[] a1,a2,a3; } return 0; }