Problem B: 数组类(II)

Problem B: 数组类(II)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 3606  Solved: 1760
[Submit][Status][Web Board]

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

append.cc,

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);
        }
    }
}

  

#include <iostream>
#include <algorithm>
using namespace std;
template <typename T>
class Array
{
public :
    T *num;
    int len;
    Array(int l):len(l){ num=new T[len];}
    int size()
    {
        return len;
    }
    void put(int n)
    {
        sort(num, num+len);
        if(n<=len)
        for(int i=len-1; i>=len-n; i--)
        {
            if(i==len-1)
            cout<<num[i];
            else
            cout<<" "<<num[i];
        }
        else
        for(int i=len-1; i>=0; i--)
        {
            if(i==len-1)
            cout<<num[i];
            else
            cout<<" "<<num[i];
        }
        cout<<endl;
    }
    T& operator[](int n)
    {
        return num[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);
        }
    }
}

  

原文地址:https://www.cnblogs.com/Jie-Fei/p/9129457.html

时间: 2024-11-05 16:26:59

Problem B: 数组类(II)的相关文章

Problem A: 数组类(I)

Problem A: 数组类(I) Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 3295  Solved: 2418[Submit][Status][Web Board] Description 封装一个整型数组类,用于存储整数和处理的相关功能,支持以下操作: 1. Array::Array()无参构造方法:创建一个空数组对象. 2. Array::size()方法:返回Array对象中元素个数. 3. Array::get(int n)方法:按

实验6:Problem B: 数组类(II)

Description 封装一个模板数组类,用于存储数组和处理的相关功能,支持以下操作: 1. Array::Array(int l)构造方法:创建一个长度为l的组对象. 2. Array::size()方法:返回Array对象中元素个数. 3. Array::put(int n)方法:按从大到小的顺序输出前n大元素,若数组长度小于n则从大到小输出全部元素. 4. 下标运算符:返回下标所指的元素. -------------------------------------------------

Problem A: 数组类(II)

Description 封装一个模板数组类,用于存储数组和处理的相关功能,支持以下操作: 1. Array::Array(int l)构造方法:创建一个长度为l的组对象. 2. Array::size()方法:返回Array对象中元素个数. 3. Array::put(int n)方法:按从大到小的顺序输出前n大元素,若数组长度小于n则从大到小输出全部元素. 4. 下标运算符:返回下标所指的元素. -------------------------------------------------

实验11:Problem D: 分数类的模板数组类

在默认构造函数里面,分母的默认值不能为0!! Home Web Board ProblemSet Standing Status Statistics Problem D: 分数类的模板数组类 Problem D: 分数类的模板数组类 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 509  Solved: 350[Submit][Status][Web Board] Description 封装一个模板数组类Array,支持一下操作: 1. 构造函

Problem B: 字符串类(II)

Problem B: 字符串类(II) Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 6103  Solved: 2687[Submit][Status][Web Board] Description 封装一个字符串类,用于存储字符串和处理的相关功能,支持以下操作: 1. STR::STR()构造方法:创建一个空的字符串对象. 2. STR::STR(const char *)构造方法:创建一个字符串对象,串的内容由参数给出. 3. STR::le

Problem S: 分数类的模板数组类

Problem S: 分数类的模板数组类 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2155  Solved: 1624[Submit][Status][Web Board] Description 封装一个模板数组类Array,支持一下操作: 1. 构造函数Array(int n),将数组初始化为n个存储空间: 2. 函数input(int n),读取最多n个元素,但不能超过数组存储空间的上限: 3. 重载下标运算符,返回数组的元素. 封装一

设计数组类扩展数组的功能

建立专门的数组类处理有关数组的操作 数组是几乎所支持的组织数据的方法.C和C++对数组类型提供了内置支持,使我们利用数组实现软件中需要的各种实用的功能.但是,这种支持仅限于用来读写单个元素的机制.C++不支持数组的抽象abstraction,也不支持对整个数组的操作.例如:把一个数组赋值给另外一个数组,对两个数组进行相等比较或者想知道数组的大小size,等等.对C++而言,数组是从C语言中继承来的,它反映了数据与对其进行操作的算法的分离,有浓厚的过程化程序设计的特征.数组并不是C++语言的一等公

4 C++基础4 类 const函数 转全局函数 返回*this 数组类。友元 函数 类 操作符重载

1,请问类中函数 const修饰的谁? [email protected]:~/c++$ cat main.cpp  #include <iostream> #include <stdlib.h> using namespace std; class A { public: //const的三种写法 //const void fun(int a,int b) //void const fun(int a,int b) //void fun(int a,int b) const vo

Arrays数组类使用介绍

Arrays:数组类,是包java.util下面的一个类,Collection接口也在这个包下面. 主要的方法: Arrays.asList(数组对象)  //此静态方法用于将Array转化为List类型对象.常常用于List类型对象的初始化中. Arrays.sort(array):升序排序: Arrays.banarySearch(array,2):查找2这个元素所在数组中的位置,用二分查找: Arrays.copyOf(float[] original, int newLength):复制