求编写一个简单的C++程序

试定义一个类ARRAY,实现对一维整型数组的排序。排序的规则如下:将一维数组中各元素按其各位的数字之和从小到大排序。具体要求如下:(1)私有数据成员:linta[100]... 试定义一个类ARRAY,实现对一维整型数组的排序。排序的规则如下:将一维数组中各元素按其各位的数字之和从小到大排序。具体要求如下:
(1)私有数据成员:
l int a[100]; 待排序的数组;
l int n; 数组中元素的个数;
(2)公有成员函数
l ARRAY(int t[], int m); 构造函数,利用参数t初始化成员a,参数m为数组t中元素的个数,用参数m初始化成员n;
l int sum(int x); 求整数x的各位数字之和,并返回该值,此函数供成员函数fun()调用;
l void fun(); 按要求对数组a的元素排序;
l void print(); 输出数组a的所有元素。
(3)在主函数中对该类进行测试。
要求输出的结果如下:
排序前的数组为:297, 735, 624, 158, 312, 900
排序后的数组为:312, 900, 624, 158, 735, 297
展开
 我来答
匿名用户
2013-06-27
展开全部
class ARRAY
{
ARRAY& operator = (const ARRAY&);
ARRAY(const ARRAY&);
private:
int a[100];
int n;
public:
ARRAY(int t[], int m);
int sum(int x);
void fun();
void print();
};

ARRAY::ARRAY(int t[], int m)
{
n = m;
while(m --> 0) a[m] = t[m];
}

int ARRAY::sum(int x)
{
int r = 0;
while(x) r += x%10, x/=10;
return r;
}

void ARRAY::fun()
{
int i, j, t;
for(i = n - 1; i >= 0; --i)
for(j = 0; j < i; ++j)
if (sum(a[i]) < sum(a[j]))
t = a[i], a[i]=a[j], a[j] = t;
}

#include <iostream>
using namespace std;
void ARRAY::print()
{
int i, iend = n - 1;
for(i = 0; i < iend; ++i)
cout << a[i] << ", ";
cout << a[i] << endl;
}

int main()
{
int data[] = {297, 735, 624, 158, 312, 900};
ARRAY arr(data, sizeof(data) / sizeof(*data));
cout << "排序前的数组为:";
arr.print();
arr.fun();
cout << "排序后的数组为:";
arr.print();
return 0;
}

你蛋疼吗!我很蛋疼!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式