求教,c++:设计一个类Array,实现功能:删除一维数组中所有相同的数,使之只剩下一个。

求教,c++:设计一个类Array,实现功能:删除一维数组中所有相同的数,使之只剩下一个。 *9.【题目】一个数列中出现次数最多的数值称为众数。例如,数列2、3、-1、2、1、3中,2、3都出现了两次,它们都是这组数据的众数。试定义一个类NUM,求一维数组个元素中的众数。具体要求(1)私有数据成员 int a[10],m; 有m个数的原始数组。 int b[10], n; 数组b中依次存放数组a的n个众数。 (2)公有成员函数 NUM(int a1[],int m); 构造函数,用数组a1的前m个元素初始化数组a和m,同时将n置0。 void fun(); 按给定的算法从数组a中找出众数。 void print(); 输出数组a中的元素及已找出的众数。 求众数的算法提示: 1. 定义一个临时数组t,在t[i]中存放a[i]在数组中重复出现的次数。例如,当数组a为{2,3,-1,2,1,3}时,经计算后数组t应为{2,2,1,2,1,2}; 2. 找出数组t中最大元素的下标j(可能有多个值)。在该例中,j=0,1,3,5; 3. 对步骤 2中求得的每个j,如果a[j]在数组b中不存在,则将a[j]存入数组b中,同时众数个数(n)加1。在该例中,数组b中保存的最终结果为2,3;n为2。(3)在主函数中对该类进行测试。 输出示例: 数组:2,3,-1,2,1,3 众数个数:2 众数:2,3 */

思路,读取第一个元素,放入一个变量,在读下一个元素,如果相等,下面的元素全部上移,如果不相等当前元素赋给变量,在读下一个元素写个简单的:
a[5]={1,2,3,4,5};//假设有五个元素
j=a[0];//把第一个复给J
le=5//数组的长度
for(i=1;i<le;i++){//开使循环
if(j==a[i]){//如果上一个与下一个一样
for(k=i;k<le-1;k++){
a[k]=a[k+1];//所有的元素上移
}
le--;//数组长度减一;
}else{
j=a[i];//如果不相等,继续判断下一个;
}
}
第二种思路比较简单,就是把这个数组赋给一个新的数组;
a[5];//略
b[5];//新的数组
le=0;//初使长为0;
b[le]=a[0];//赋初值为a[0]
for(i=1;i<5;i++){
if(b[le]==a[i]){//如果相同判断下一个
continue;
}else{//如果不同
le++;//长度加一,
b[le]=a[i];//赋值
}
}
C很长时间没写了,可能就不对的地方,反正就是这个思路
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网