problemb:数组类(ii)

一本故事i 一本故事i     2022-11-20     428

关键词:

 

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

  

problemb:平面上的点和线——point类line类(ii)

Description在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定,两点确定一条线段。现在我们封装一个“Point类”和“Line类”来实现平面上的点的操作。根据“append.cc”,完成Point类和Line类的构造方法和show()方... 查看详情

problemb:类的初体验(ii)

Description定义一个类Data,只有一个double类型的属性和如下3个方法:1. 带1个参数的构造函数——初始化属性值为参数值。2. doublegetValue()——获得属性值。3.  voidshowValue()——显示属性值。Input一个double类型的数值。O... 查看详情

problemb:整型数组运算符重载

ProblemB:整型数组运算符重载TimeLimit:1Sec  MemoryLimit:128MBSubmit:2871  Solved:1875[Submit][Status][WebBoard]Description定义Array类:1.拥有数据成员intlength和int*mems,分别是数组中元素的个数和元素列表。2.无参构造函数,将mems设 查看详情

problemb:时间和日期类(iii)

ProblemB:时间和日期类(III)TimeLimit: 4Sec  MemoryLimit: 128MBSubmit: 2889  Solved: 1732[Submit][Status][WebBoard]Description设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间。 设计日期时 查看详情

problemb:字符类的封装

Description先来个简单习题,练练手吧!现在需要你来编写一个Character类,将char这一基本数据类型进行封装。该类中需要有如下成员函数:1.无参构造函数。2.构造函数Character(char):用参数初始化数据成员。3.voidsetCharacter(char):重... 查看详情

problemb:数量的类模板

Description定义一个类模板Data,用于包装C++中的基本数据类型int和double。它包括:1.数据成员value为该对象所包装的值。2.无参构造函数(初始化value为0)和带参构造函数。3.重载的运算符:>、<、+以及<<。其中"+"返回和,... 查看详情

problemb:时间类的错误数据处理

Description封装一个时间类Time,用于时间处理的相关功能,支持以下操作:1.Time::Time()无参构造方法。2.Time::Time(int,int,int)构造方法:传递时分秒的三个参数构造对象。3.Time::Time(constT&)拷贝构造方法。4.成员读函数:  Time::... 查看详情

problemb:分数类的类型转换

Description封装一个分数类Fract,用来处理分数功能和运算,支持以下操作:1.构造:传入两个参数n和m,表示n/m;分数在构造时立即转化成最简分数。2.show()函数:分数输出为“a/b”或“-a/b”的形式,a、b都是无符号整数。若a为0或... 查看详情

problema:数组类(ii)

Description封装一个模板数组类,用于存储数组和处理的相关功能,支持以下操作:1.Array::Array(intl)构造方法:创建一个长度为l的组对象。2.Array::size()方法:返回Array对象中元素个数。3.Array::put(intn)方法:按从大到小的顺序输出前n... 查看详情

problemb:还会用继承吗?

ProblemB:还会用继承吗?TimeLimit:1Sec  MemoryLimit:128MBSubmit:2599  Solved:1892[Submit][Status][WebBoard]Description定义一个Base类,包括1个int类型的属性,以及满足输出格式要求的构造函数、拷贝构造函数和析构函数。定义Base类的子... 查看详情

problemb:零起点学算法81——找出数组中最大元素的位置(下标值(代码片段)

#include<stdio.h>intmain(void)intn,a[10],i,max;while(scanf("%d",&n)!=EOF)for(i=0;i<n;i++)scanf("%d",&a[i]);max=0;for(i=1;i<n;i++)if(a[max]<a[i])max=i;printf("%d%d",a[max],ma 查看详情

problemb:七龙珠ii(代码片段)

Description小王去找了个算命先生算算这辈子是有钱还是没钱。他在纸上写下“性命”两个字,问哪个字重要。小王想了想说当然是命比较重要。他摇摇头:“你,没钱”“为什么?”“有钱,任性。没钱,认命。”小王问大师,... 查看详情

莫比乌斯反演个人思考——关于problemb的三种推法。

最近刷莫反题目,刷着刷着,发现problemb这道题目可以用三种方法推出来,觉得记下来以后可以方便复习,也算巩固一下。problemb这类问题是:∑i=1n∑j=1m[gcd(i,j)=d]\\sum_i=1^n\\sum_j=1^m[gcd(i,j)=d]i=1∑n... 查看详情

莫比乌斯反演个人思考——关于problemb的三种推法。

最近刷莫反题目,刷着刷着,发现problemb这道题目可以用三种方法推出来,觉得记下来以后可以方便复习,也算巩固一下。problemb这类问题是:∑i=1n∑j=1m[gcd(i,j)=d]\\sum_i=1^n\\sum_j=1^m[gcd(i,j)=d]i=1∑n... 查看详情

noip2017集训测试赛problemb:mex[补档]

Description给你一个无限长的数组,初始的时候都为0,有3种操作:操作1是把给定区间[l,r][l,r]设为1,操作2是把给定区间[l,r][l,r]设为0,操作3把给定区间[l,r][l,r]0,1反转。一共n个操作,每次操作后要输出最小位置的0。Input第一行一... 查看详情

problemb:excuses,excuses!

DescriptionJudgeItoishavingaproblemwithpeoplesubpoenaedforjurydutygivingratherlameexcusesinordertoavoidserving.Inordertoreducetheamountoftimerequiredlisteningtogoofyexcuses,JudgeItohasaskedthatyouwrit 查看详情

problemb:文件操作--文本文件读入

ProblemB:文件操作--文本文件读入TimeLimit:1Sec  MemoryLimit:128MBSubmit:857  Solved:300[Submit][Status][WebBoard]Description现有100名学生的姓名(name)、学号(num)、英语(English)、数学(Math)、语文(Chinese)成绩存储在一个文本 查看详情

[haoi2011]problemb(代码片段)

[HAOI2011]Problemb给出n个询问,询问\(\sum_i=a^b\sum_j=c^d(gcd(i,j)==k)\),100%的数据满足:1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000,1≤k≤50000。解法一:Mobius反演设\[b\leqd,f(k)=\sum_i=a^b\sum_j=c^d(gcd(i,j)==k)\]\[F(k)=\sum 查看详情