C++ 数组删除所有相同的数只剩一个

在被调函数中删去一维数组中所有相同的数,使之只剩一个,被调函数返回删除后数组中数据的个数,并将原数组和新数组的数据保存到文件array.txt中

要求1.动态分配内存
2.至少调用一次函数
3.用ARRAY。TXT保存数组

#include<iostream>
#include <fstream>
using namespace std;
int del(int *,int);
void main()
{
//输入数组
int n,count,i;
cout<<"输入一位数组元素总数:";
cin>>n;
int *a = new int[n]; //动态分配内存
for(i=0;i<n;i++)
cin>>a[i];


//输出到文件中
ofstream out;
out.open("d:\\array.txt");
if(!out){cout<<"Can not open this file!"<<endl;return;}
for(i=0;i<n;i++)
out<<a[i]<<" ";
out<<endl;
out.close();

count = del(a,n);
cout<<"删除后数组元素总数为:"<<count<<endl<<"各元素为:"<<endl;
for(i=0;i<count;i++)
cout<<a[i]<<" ";
cout<<endl;

//输出到文件中
out.open("d:\\array.txt",ios::app);
if(!out){cout<<"Can not open this file!"<<endl;return;}
for(i=0;i<count;i++)
out<<a[i]<<" ";
out.close();
cout<<"保存文件成功"<<endl;
}
int del(int *p,int n)
{
int count=n;
int i,j,k;
for(i=0;i<count-1;i++)  //共进行count-1趟比较,每趟从开始位置比较其后的count-i个数
{
for(j=i+1;j<count;j++) 
{
if(p[i]==p[j])   //找到相同的,count减1,并依次往前挪动后面的数
{
count--;
for(k=j;k<count;k++)
p[k] = p[k+1];
}
}
}
return count;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-25
C++ remove erase;
相似回答