• Problem A: 数组类(II)


    Description

    封装一个模板数组类,用于存储数组和处理的相关功能,支持以下操作:
    1. Array::Array(int l)构造方法:创建一个长度为l的组对象。
    2. Array::size()方法:返回Array对象中元素个数。
    3. Array::put(int n)方法:按从大到小的顺序输出前n大元素,若数组长度小于n则从大到小输出全部元素。
    4. 下标运算符:返回下标所指的元素。
    -----------------------------------------------------------------------------
    你设计一个模板数组类Array,使得main()函数能够正确运行。
    函数调用格式见append.cc。
    append.cc中已给出main()函数。

    Input

    输入的第一个整数n,表示有n组测试数据。
    后面的每行以一个整数k开头,表示后面有k个同类型的数组元素。
    数组元素有以下三种类型:整数、浮点数和字符,并且按固定的次序间隔出现。

    Output

    把输入的数组,按值从大到小输出前10个元素,若输入不足10个则全部输出。每行数据对应一个输出。格式见sample。

    Sample Input

    3 10 1 2 3 4 5 6 7 8 9 0 5 1.1 2.2 3.3 4.4 5.5 20 ABCDEGHIJMNPRSTUVWXY

    Sample Output

    9 8 7 6 5 4 3 2 1 0 5.5 4.4 3.3 2.2 1.1 Y X W V U T S R P N

    HINT

    Append Code

    #include<iostream>
    using namespace std;
    template<class T>
    class Array
    {
    private:
        T *sss;
        int si;
    public:
        Array(int l):si(l){sss=new T[si];}
        ~Array(){if (sss!=NULL)delete []sss;}
        int size(){return si;}
        void put(int n)
        {
            int i,j;
            for(i=0;i<si-1;i++)//挨着和每个比,最后一个不用了
            {
                for(j=i+1;j<si;j++)//从下一个开始,到最后
                {
                    if(sss[i]<sss[j])
                    {
                        T t=sss[i];
                        sss[i]=sss[j];
                        sss[j]=t;
                    }
                }
            }
            if(n>si)
            n=si;
                cout<<sss[0];
            for(int i=1;i<n;i++)
                cout<<" "<<sss[i];
            cout<<endl;
        }
        T& operator[](int n)//少个引用,我去
        {
            return sss[n];
        }
    };
    int main()
    {
        int cases, len;
        cin >> cases;
        for(int ca = 1; ca <= cases; ca++)
        {
            cin >> len;
            if(ca % 3 == 0)
            {
                Array<char> chr_arr(len);
                for(int i = 0; i < chr_arr.size(); i++)
                    cin >> chr_arr[i];
                chr_arr.put(10);
            }
            if(ca % 3 == 1)
            {
                Array<int> int_arr(len);
                for(int i = 0; i < int_arr.size(); i++)
                    cin >> int_arr[i];
                int_arr.put(10);
            }
            if(ca % 3 == 2)
            {
                Array<double> dbl_arr(len);
                for(int i = 0; i < dbl_arr.size(); i++)
                    cin >> dbl_arr[i];
                dbl_arr.put(10);
            }
        }
    }

  • 相关阅读:
    爬虫案例-爬运维工单
    pandas数据库mysql交互
    pandas数据分析之三:数据重塑与轴向转化、数据分组与分组运算、离散化处理、多数据文件合并操作
    pandas数据分析之二:数据格式转换、排序、统计、函数
    pandas数据分析之一:数据类型及读写
    pandas的透视表pivot_table使用及筛选
    HTML5+CSS3学习笔记(一) 概述
    HTML5+CSS3学习笔记(二) 页面布局:HTML5新元素及其特性
    HTML基础笔记
    Linux札记1- centos7 桌面GNOME安装,语言设置,hostname设置
  • 原文地址:https://www.cnblogs.com/TogetherLaugh/p/6636216.html
Copyright © 2020-2023  润新知