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

打卡 有序数组(类模板)

时间:2023-05-04 23:24:13浏览次数:37  
标签:template int MyArray pC 数组 打卡 data 模板 size

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

每行输入的第一个数字为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

思路:接受一组数据,能对数据排序,也能输出数组的内容,说明了要有三个功能实现,

都是通过for循环来判断条件是否成立,其中排序要用到两次for循环嵌套

代码:

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

 

标签:template,int,MyArray,pC,数组,打卡,data,模板,size
From: https://www.cnblogs.com/qmz-znv2/p/17372858.html

相关文章

  • 编程打卡: C++ 语言程序设计
    #include<iostream>usingnamespacestd;classComplex{protected:doublereal;doubleimag;public:Complex(doubler=0.0,doublei=0.0):real(r),imag(i){};Complexoperator+(constComplex&c){......
  • 打卡4
    问题描述:给定一个M进制的数x,实现对x向任意的一个非M进制的数的转换。流程图:  伪代码:inputM,xx0<-0fora<-0to...iftemp[a]=’\0’breakfori<-ato0x0+=M^iinputNforj<-0to...b=x0/N^jifb>=Noutputchar‘b%N’elseoutputchar‘b’break代码:#i......
  • 打卡
    1.问题:一个口袋中放个12球,一直其中3个是红的,3个是白的,6给是黑的,现从中任取8个,问共有多少种可能的黑色搭配?2.思路:知红球数与白球数均小于或等于3个,又黑球有六个,故知八个球中必有黑球,所以二重for循环将红球与白球的所有的情况列举,并用8减去两个球数得可能的黑球数判断是否小于或等......
  • numpy.ndarray.flatten-返回numpy对象的一维数组
    参考:https://numpy.org/doc/stable/reference/generated/numpy.ndarray.flatten.html语法格式ndarray.flatten(order='C')order:“C”表示按行(C-style)顺序折叠。“F”表示按列(Fortran-style)顺序进行平化。'A'表示:如果A在内存中是Fortran连续的,则按列顺序平化,否则按行顺......
  • 第十天打卡
    补充下列代码,使得程序的输出为:A:3A:15B:53155类和函数接口定义: 参见裁判测试程序样例中的类和函数接口。 裁判测试程序样例: #include<iostream>usingnamespacestd;classCMyClassA{intval;public:CMyClassA(int);voidvirtualprint();};CMyCl......
  • 每日打卡-16
    一.问题描述农夫约翰有N头奶牛,编号1∼N。约翰让它们排成一排,以便拍照。最初,奶牛从左到右按照a1,a2,…,aN的顺序排列。但是,约翰希望奶牛从左到右按照b1,b2,…,bN的顺序排列。为此,他需要对队列进行一系列的调整操作。每次操作可以选择任意一头奶牛并将其向左移动一些位......
  • java基础-数组的定义,静动态初始化,数组元素的相关操作、数组的内存图
    一、什么是数组数组指的是一种容器,可以用来存储同种数据类型的多个值。数组容器在存储数据的时候,需要结合隐式转换考虑。例如:int类型的数组容器,只能存储byte、short、int类型的数据。(byte<short<int<long<float<double)例如:double类型的数组容器,可以存储byte、short、int、long......
  • 数组排序输出(函数模板)
    一、问题描述:对于输入的每一批数,按从小到大排序后输出。一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束),第二个输入为该批数的数量size(0<size<=10),接下来为size个指定类型的数据。输出将从小到大顺序输出数据。函......
  • 第十二天打卡
    一、问题描述根据银行的不同月利息,现在某人手上有2000元,要求通过计算选择出一种存钱方案,使得这笔钱存入银行20年后获得的利息最多,假设银行对超出存款期限的那一部分时间不付利息。二、设计思路1.由于在每个期限的存钱次数不做限制,故可以直接都遍历一次;2.设计五个数来存储次......
  • 天天打卡9
    编写一个哺乳动物类Mammal,再由此派生出狗类Dog,二者都声明speak()成员函数,该函数在基类中被声明为虚函数。声明一个Dog类的对象,通过此对象调用speak函数,观察运行结果。#include<iostream>usingnamespacestd;classMammal{ public: Mammal(){cout<<"ConstructorinMamma......