zoukankan      html  css  js  c++  java
  • 有序数组(类模板)

    题目

    实现一个类模板,它可以接受一组数据,能对数据排序,也能输出数组的内容。

    每行输入的第一个数字为0,1,2或3:为0时表示输入结束; 为1时表示将输入整数,为2时表示将输入有一位小数的浮点数,为3时表示输入字符。

    如果第一个数字非0,则接下来将输入一个正整数,表示即将输入的数据的数量。

    从每行第三个输入开始,依次输入指定类型的数据。

    类模板:

    template <class T>
    class MyArray
     

    裁判测试程序样例:

    #include <iostream>
    using namespace std;
    

    /* 请在这里填写答案 */

    template<class T>
    MyArray<T>:
    :~MyArray(){ delete[] data;}

    template<class T>
    bool MyArray<T>:
    :check(){
    int i;
    for(i=0;i<size-1;i++)
    if(data[i]>data[i+1]) { cout<<"ERROR!"<<endl;return false;}
    return true;
    }
    int main( )
    {
    MyArray<int> *pI;
    MyArray<float> *pF;
    MyArray<char> *pC;
    int ty, size;
    cin>>ty;
    while(ty>0){
    cin>>size;
    switch(ty){
    case 1: pI = new MyArray<int>(size); pI->sort(); pI->check(); pI->display(); delete pI; break;
    case 2: pF = new MyArray<float>(size); pF->sort(); pF->check(); pF->display(); delete pF; break;
    case 3: pC = new MyArray<char>(size); pC->sort(); pC->check(); pC->display(); delete pC; break;
    }
    cin>>ty;
    }
    return 0;
    }

    输入样例:

    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
     

    正确代码:

    
    template <class T>
    class MyArray{
         int size;
        T *data ;
        
    
    public:
        MyArray(int size)
        {
            this->size = size;
            data = new T[size];
            for (int i = 0; i < size;i++){
                cin >> data[i];
            }
          }
          ~MyArray();
           bool check();
           void sort();
           void display();
    };
    template<class T>
    void MyArray<T>::sort(){
        for (int i = 0; i < size;i++)
            for (int j = 0; j < size - 1;j++)
                 if(data[j]>data[j+1]){
                     T temp = data[j];
                     data[j] = data[j + 1];
                     data[j + 1] = temp;
    
                 }
    }
    template<class T>
    void MyArray<T>::display(){
        for(int i=0; i<size-1; i++) cout<<data[i]<<' ';
        cout<<data[size-1]<<endl;
    }     
    
    
  • 相关阅读:
    “图”以致用组
    水体频率小组
    2021年云开发组三等奖作品展示
    毫秒级百万数据分页存储过程[欢迎转载]
    SQL Server 数据备份存储过程[原创]
    博客园居然被中国电信提醒有病毒,有图为证
    网络文件夹例子
    小技巧:在DropDownList数据绑定前插入固定文字
    ASP.NET整合Discuz!NT3.5实例说明(含用户登录、评论等)
    Visual Studio 2008的性能改进以及十大新功能(转)
  • 原文地址:https://www.cnblogs.com/pluie/p/12670400.html
Copyright © 2011-2022 走看看