老师留了一道C++题 编写数组类CArry

来源:百度知道 编辑:UC知道 时间:2024/05/18 05:30:47
怎么也搞不定,各位大虾帮帮忙!

编写数组类CArry,按下述要求实现功能
(1)定义私有成员,int length,n,分别表示数组类的最大长度和和存储数据数量 int *arr存储数据元素

(2)定义含有成员函数
(a)构造函数CArry(int k=100),分配存储单元并通过参数k给length,n初始化
(b)void add(int a)增加元素a
(c)void del(int k)删除指定位置的元素
(d)void sort()给元素排序(升序)
(e)~CArry()析构函数,释放存储空间

(3)编写主函数,建立文本文件intput.txt,内容为-2 3 7 11 9 26 -7 100
从input.txt文件中读数据,并将排序(升序)后的结果存放到排名为output.txt的文本文件中,验证个成员函数的正确性。
程序在运行时并没有进行add吧...

#include<iostream>
#include<fstream>
using namespace std;

class CArry{
public:
CArry(int k=100);
void add(int a);
void del(int k);
void sort();
int get_element(int k);
int get_n();
~CArry();
private:
int length,n;
int *arr;
};

CArry::CArry(int k)
{
if (k<=0) k=100;
length=k;
n=0;
arr=(int*)malloc(k*sizeof(int));
}

void CArry::add(int a)
{
if (n==length) return;
arr[n]=a;
n++;
}

void CArry::del(int k)
{
if (k<0 || k>=n) return;
int i;
for (i=k+1; i<n; i++) arr[i-1]=arr[i];
n--;
}

void CArry::sort()
{
int i,j;
int tmp;
for (i=0; i<(n-1); i++)
for (j=n-2; j>=i; j--)
if (arr[j]>arr[j+1])
{
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}