求助C++高手,编一下这道题.拜托了!

来源:百度知道 编辑:UC知道 时间:2024/07/07 09:57:22
[题目]
有16个无序的数{10,4,2,3,8,4,2,5,6,8,6,7,8,9,10,1},首先将其按由小到大的顺序排好,如:{1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10},存于数组a中。试建立一个类ARR,完成将其排序,并将其中相同的数删除得只剩一个。经删除后,a数组中的内容为{1 2 3 4 5 6 7 8 9 10}。具体要求如下:
(1)私有数据成员。;
●int n:数组实际元素个数。
●int *a:指向一个动态申请的数组空间,该数组存放原始数据及结果数据。
(2)公有成员函数。
●ARR(int x[],int size):构造函数,用参数size初始化n,用参数数组x初始化a数组。
●void sort():完成将数组a中元素按序排列的工作。
●void delsame():完成将数组a中相同元素的删除工作。
●void show(fstream &):将删除后数组元素个数以及结果数组按每行5个数的形式输出。
●~ARR():析构函数,释放动态申请的数据空间。
(3) 在主程序中完成对该类的测试。在主程序中定义数组int b[ ],其元素个数及初值由输入的数据文件中取得,个数为16、元素值为:{10,4,2,3,8,4,2,5,6,8,6,7,8,9,10,1}。定义一个ARR类的对象v,用b及数组元素的个数初始化该对象,然后按上述要求完成对该类的测试。
[要求]
将源程序取名为cd7.cpp,程序中使用的数据皆放在文件名为data.txt中,并使用C++读取文件的方式输入程序中需要的数据,最后程序运行的结果同时以2种方式输出:①屏幕显示方式和②文件的形式存放在文件名为result.txt中,以上3文件皆放在学号姓名文件夹下,供阅读、运行使用。

#include <iostream.h>
#include <fstream.h>

class ARR
{
private:
int n;
int *a;

public:
ARR(int x[],int size)
{
a=new int[size];
for(int i=0;i<size;i++)
a[i]=x[i];
n=size;
}

~ARR()
{
delete a;
}

void sort()
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
temp=i;
for(j=i+1;j<n;j++)
{
if(a[temp]>a[j])
temp=j;
}
if(temp!=i)
{
int t=a[temp];
a[temp]=a[i];
a[i]=t;
}
}
}

void delsame()
{
int i,j,temp;
for(i=0;i<n;i++)
{
temp=a[i];
for(j=i+1;j<n;j++)
{
if(temp==a[j])
{
for(int k=j;k<n;k++)
a[k]=a[k+1];
n--;
}
}
}
}

void show(fstream out)