首页 > 其他分享 >模板(有序数组)

模板(有序数组)

时间:2023-05-09 23:55:15浏览次数:42  
标签:数组 int MyArray pC template 有序 data 模板 size

6-1 有序数组(类模板) 分数 10 作者 何振峰 单位 福州大学

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

每行输入的第一个数字为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
  代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
  C++ (g++)         1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42   template<class·T> class·MyArray{ private: ····T·*data; ····int·size; · public: ····MyArray(int·s); ····~MyArray(); ····void·sort(); ····void·display(); ····bool·check(); }; · template<class·T> MyArray<T>::MyArray(int·s){ ········size·=·s; ········data·=·new·T[size]; ········for(int·i=0;i<size;i++) ············cin>>data[i]; ····} · template<class·T> void·MyArray<T>::display(){ ····for(int·i=0;i<size;i++){ ········cout<<data[i]; ········if(i<size-1) ············cout<<"·"; ····} ····cout<<endl; } · template<class·T> void·MyArray<T>::sort(){ ········for(int·i=0;i<size-1;i++) ············for(int·j=0;j<size-i-1;j++) ················if(data[j]>data[j+1]){ ····················T·temp·=·data[j]; ····················data[j]·=·data[j+1]; ····················data[j+1]·=·temp; ················} ····}    
   

标签:数组,int,MyArray,pC,template,有序,data,模板,size
From: https://www.cnblogs.com/7777lcc/p/17386714.html

相关文章

  • 函数 指针 数组
    首先抛出几个问题1什么是函数?什么是数组?什么是指针?2怎么区分函数指针指针函数指针数组函数指针数组?开始解读:首先明确这几个概念A函数:表示实现特定功能的可复用代码块。B指针:保存变量地址的特殊变量(指针既然是变量,那么也是有地址的,当我们想要对指针自己进行操作时,可能......
  • 已知一个数组中有俩个数出现了奇数次,其余数出现偶数次,找出出现奇数次的俩个数
    /***@Auther:么么*@Date:2023/5/9-05-09-22:12*@Description:PACKAGE_NAME*@version:1.0*///已知一个数组中有俩个数出现了奇数次,其余数出现偶数次,找出出现奇数次的俩个数publicclasstest03{//这是一个main方法,是程序的入口:publicsta......
  • C#设计模式14——模板方法的写法
    模板方法(TemplateMethod)是一种设计模式,它定义了一个操作中的算法的骨架,将某些步骤推迟到子类中实现,从而使得子类可以在不改变算法骨架的情况下重新定义算法的某些步骤。作用:使用模板方法可以使得代码的重复度降低,同时也能够避免由于算法中某个特定步骤的改变导致整体算法需要改......
  • 力扣 724. 寻找数组的中心下标 --python
    给你一个整数数组 nums,请计算数组的中心下标。数组中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为0,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个......
  • vue2+vant2+rem+axios+钉钉自动登录 h5模板
    下载代码请轻轻的点一下这里~Node版本要求VueCLI需要Node.js8.9或更高版本(推荐8.11.0+)。你可以使用nvm或nvm-windows在同一台电脑中管理多个Node版本。本示例Node.js14.17.0启动项目npminstallnpmrundev打包项目打测试包会带vconsole控制台对......
  • 个人模板
    数学快速幂llqmi(lla,llb,llmod){llans=1%mod;while(b){if(b&1)ans=ans*a%mod;a=a*a%mod;b>>=1;}returnans;}快速乘lla,b,p;llqmimul(lla,llb,llp){llans=0;a......
  • js方法判断两个数组的交集、并集和超集
    下面是JS实现数组交集、并集和超集的方法:1.交集:即两个数组中相同的元素。可以通过遍历一个数组,判断另一个数组是否包含该元素来确定。functionintersection(arr1,arr2){constresult=[];for(leti=0;i<arr1.length;i++){if(arr2.includes(arr1[i])){......
  • 1000个已成功入职的软件测试工程师简历经验总结:软件测试工程师简历项目经验怎么写?(含
    一、前言:浅谈面试 面试是我们进入一个公司的门槛,通过了面试才能进入公司,你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试,得到公司的认可呢?面试软件测试要注意哪些问题呢?下面和笔者一起来看看吧。这里分享一下笔者十年测试生涯的面试总结!软件测试面试常......
  • 数组中唯一只出现一次的数字
    思路如果一个数字出现3次,那么它的二进制表示的每一位也出现三次,如果把所有出现三次的数字的二进制表示的每一位都分别加起来,那么每一位的和都能被3整除cnt[32]数组存储每一位1出现的次数遍历数组中所有数,将其二进制表示记录在cnt数组里遍历cnt数组,根据cnt[i]能......
  • leetcode-349. 两个数组的交集
    returnnums1.Intersect(nums2);题意:给定两个数组,编写一个函数来计算它们的交集。c#可以用linq自带的方法返回,顺便看了下微软的内部实现:privatestaticIEnumerable<TSource>IntersectIterator<TSource>(IEnumerable<TSource>first,IEnumerable<TSource>second,IEquali......