首页 > 代码库 > 训练1:删除序列中相同的数
训练1:删除序列中相同的数
题目要求:
有16个数{1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10},已经按由大到小顺序排好,存储在数组a中
试建立一个类ARR,完成删除数组中相同的数,经过删除后,数组中的内容为{1,2,3,4,5,6,7,8,9,10}.
#include<iostream>#include<iomanip>using namespace std;class ARR{ public: void ARR_delete(); ARR();//构造函数的声明不能用void void ARR_show(); private: int a[16];};ARR::ARR()//不能是void ARR::ARR(){ int i; for(i = 0;i<16;i++) { cin>> a[i]; }}void ARR::ARR_delete(){ int i,j,temp; temp = a[0]; for(j = 0;j<15;j++) { temp = a[j]; for(i = j+1 ;i<16;i++) { if(temp == a[i]) { a[i]= 0;//这种消除法是比较损耗内存的 } } }}void ARR::ARR_show(){ int i,j; for(i= 0;i<16;i++) { if(a[i] !=0) cout <<setw(6)<< a[i]; }}int main(){ ARR ARR_test;//定义一个对象; ARR_test.ARR_delete(); ARR_test.ARR_show(); return 0;}
总结编写的时候出现的bug
15行出现了返回值什么:错误是因为声明构造函数是void ARR();其实只是ARR就可一了
40行那个也是一样,void ARR::ARR(),其实只需要ARR::ARR();
函数改进的方法:
int main(){ /*ARR ARR_test;//定义一个对象; ARR_test.ARR_delete(); ARR_test.ARR_show();*/ ARR *pt = new ARR; pt->ARR_delete(); pt->ARR_show(); delete pt; return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。