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

有序数组(类模板)

时间:2023-04-28 21:11:07浏览次数:38  
标签:数组 int MyArray pC pF 有序 data 模板 size

一、问题描述:

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

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

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

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

类模板:

1 template <class T>
2 class MyArray

裁判测试程序样例:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 /* 请在这里填写答案 */
 5 
 6 template<class T>
 7 MyArray<T>::~MyArray(){ delete[] data;}
 8 
 9 template<class T>
10 bool MyArray<T>::check(){
11     int i;
12     for(i=0;i<size-1;i++)
13         if(data[i]>data[i+1]) { cout<<"ERROR!"<<endl;return false;}
14     return true;
15 }
16 int main( )
17 {
18     MyArray<int> *pI;
19     MyArray<float> *pF;
20     MyArray<char> *pC;
21     int ty, size;
22     cin>>ty;
23     while(ty>0){
24         cin>>size;
25         switch(ty){
26             case 1: pI = new MyArray<int>(size);   pI->sort(); pI->check(); pI->display(); delete pI; break;
27             case 2: pF = new MyArray<float>(size); pF->sort(); pF->check(); pF->display(); delete pF; break;
28             case 3: pC = new MyArray<char>(size);  pC->sort(); pC->check(); pC->display(); delete pC; break;
29         }
30         cin>>ty;
31     }
32     return 0;
33 }

 输入样例:

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

 

二、代码实现:

 

 1 template<class T>
 2 class MyArray{
 3     private:
 4     int size;
 5     T *data;
 6     public:
 7     MyArray(int n)
 8     {
 9         size=n;
10         data= new T[size];
11         for(int i=0;i<size;i++)
12             cin>>data[i];
13     }
14     ~MyArray();
15     void sort()//从小到大排序
16     {
17         for(int i=0;i<size-1;i++)
18             for(int j=i+1;j<size;j++)
19             {
20                 if(data[i]>data[j])
21                 {
22                     T p;
23                     p=data[i];
24                     data[i]=data[j];
25                     data[j]=p;
26                 }
27             }
28     }
29     void display()//输出
30     {
31         for(int i=0;i<size-1;i++)
32         {
33             cout<<data[i]<<" ";
34         }
35         cout<<data[size-1]<<endl;
36     }
37     bool check();
38 };

 

标签:数组,int,MyArray,pC,pF,有序,data,模板,size
From: https://www.cnblogs.com/tljx-cen/p/17363109.html

相关文章

  • JPA 使用@query 时,判断数组
    一般如果使用@query时,我们的sql是这样的:select*fromtwhere(ifnull(:a,'')=''ort.a=:a)and(ifnull(:b,'')=''ort.b=:b)但如果a参数是一个数组a=[1,2,3],怎么办?ifnull会变成ifnull(1,2,3,'')=''这时我们可以使用  COALESCE(:a)isnu......
  • go语言 数组和切片、可变长参数、maps、字符串、指针、结构体、方法、接口
    数组和切片数组#1定义,初始化,使用#2数组是值类型数字,字符串,布尔,数组,都是值类型,真正直接存数据切片,map,指针引用类型,是个地址,指向了具体的值#3数组长度#4循环打印数组#5多纬数组#6数组定义并赋初值,把第99赋值为1,其他都是0#数组的长度也......
  • 将字节数组输入流拷贝成字节数组输出流,将ByteArrayInputStream转成ByteArrayOutputStr
    /**将ByteArrayInputStream拷贝成ByteArrayOutputStream*将字节数组输入流拷贝成字节数组输出流*/publicstaticByteArrayOutputStreamgetByteArrayOutputStream(ByteArrayInputStreaminputStream)throwsIOException{ByteArrayOutpu......
  • vscode pont 模板使用
    一、安装安装插件vscode创建项目PSE:\Code\Vues>mkdirapricot-pont1、创建目录全局安装pont-engine$npmi-gpont-engine1、安装pont-engine二、使用配置模板$pontstart1、配置模板安装依赖$npmi-Dpont-engine1、安装依赖......
  • 二维数组在代码中的应用
    在做人岗架时,最初在需求拟定时,客户信誓旦旦的说一个用户只会属于一个部门的一个岗位,所以设计数据库如下:同时也有用户角色关系表角色表以及用户码表。仅仅隔了半年突然就出现了特殊情况,有多个部门多个岗位为一个用户的情况,主职和兼职的情况。用户唯一标识是手机号,用户也只有......
  • 数字在排序数组中出现的次数
    classSolution{public://二分找出k第一次,最后一个k后面的下标,相减就是答案intgetNumberOfK(vector<int>&nums,intk){intn=nums.size();if(!n)return0;//找到第一个≥k的下标intl=0,r=n-1;while(l<r){......
  • Python很多时候要从键盘连续输入一个数组,并用空格隔开;Python爬取一些数据;python pip安
    Python要从键盘连续输入一个数组,并用空格隔开,Python中的实现方法如下:str=input(‘以空格为间隔连续输入一个数组:’)然后在键盘中输入,会·得到的str为一个字符串,要将其转为一个列表有两种方法方法一:a=[int(n)forninstr_in.split()]方法二:a=list(map(int,str.strip().sp......
  • HJ93 数组分组
    修改1: 修改2: 修改3:(正确答案)  修改4:优化修改3。在修改3代码实现,尽管找到了一组可行的true,但仍然会执行后面的递归。可进行优化找到一组true后不再进行后面的递归尝试。优化实现方式是,找到一组true后,之后其他递归全部执行返回。1#no=input()2a=list(map(int,input......
  • 1005. K 次取反后最大化的数组和
    给你一个整数数组nums和一个整数k,按以下方法修改该数组:选择某个下标i并将nums[i]替换为-nums[i]。重复这个过程恰好k次。可以多次选择同一个下标i。以这种方式修改数组后,返回数组可能的最大和。输入:nums=[4,2,3],k=1输出:5解释:选择下标1,nums变为[4,......
  • 643. 子数组最大平均数 I
    给你一个由n个元素组成的整数数组nums和一个整数k。请你找出平均数最大且长度为k的连续子数组,并输出该最大平均数。任何误差小于10-5的答案都将被视为正确答案。 示例1:输入:nums=[1,12,-5,-6,50,3],k=4输出:12.75解释:最大平均数(12-5-6+50)/4=51/4=12.7......