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

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

要求1.动态分配内存
2.至少调用一次函数
3.用ARRAY。TXT保存数组
展开
 我来答
匿名用户
推荐于2018-04-09
展开全部
#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;
}

_whales
2013-06-25 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:481万
展开全部
C++ remove erase;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式