c++两个数组合并成一个新数组 50
控制台输入两个元素不重复的int类型的数组nums1和nums2,无规律。
将两个数组合并成一个数组,合并后,不能有重复的数据出现,并按顺序输出。
列如:
数组1: 16735
数组2: 26745
合并后输出: 1234567 展开
#include<iostream>
using namespace std;
class
SET
{
int a[40],b[40];
int
numa,numb;
public:
SET(int x[],int len1,int y[],int
len2)
{
numa=len1;numb=len2;
for(int
i=0;i<len1;i++)
{
a[i]=x[i];
}
for(int
i=0;i<len2;i++)
{
b[i]=y[i];
}
}
int notIn(int
elem,int s[],int size)
{
for(int
i=0;i<size;i++)
if(s[i]==elem)
return 0;
return
1;
}
void insert();
void
outPut()
{
cout<<"并集后的数组a的个数:"
<<numa<<endl;
for(int
i=0;i<numa;i++)
{
cout<<a[i]<<"\t";
}
cout<<endl;
}
};
void SET::insert()
{
int i=0;
int
count=numa;
do
{
if(notIn(b[i],a,count)!=0)
a[numa++]=b[i];
i++;
}
while(i<numb);
}
void
main()
{
int a[]={1,3,5,7,9};
int
b[]={1,2,3,4,5,6};
SET
set(a,sizeof(a)/sizeof(a[0]),b,sizeof(b)/sizeof(b[0]));
set.insert();
set.outPut();
}
本回答由电脑网络分类达人 董辉推荐
1 10
评论
分享
举报
可以先定义c[9]将数组a,b的数放入,然后再利用冒泡法(其他排序法也可以)对数组c进行排序
追问
能给一段代码么
追答
int main()
{
int a[4]={1,2,3,4},b[5]={5,6,7,8,9};
int c[9];
int i=0,j,buffer;
for(i=0;i<4;i++)
c[i]=a[i];
for(i=0;i<8;i++)
{
for(j=0;j<8-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
//#include "stdafx.h"//If the vc++6.0, with this line.
#include <iostream>
using namespace std;
int myinput(int *p,int n){
for(int i=0;i<n;i++){
cin >> p[i];
if(cin.get()=='\n')
return i+1;
}
return i;
}
int main(int argc,char *argv[]){
int nums1[100],nums2[50],i,j,k,t,l1,l2;
cout << "Enter the first array(int, Separated by ' ', 'Enter' end)...\n";
l1=myinput(nums1,50);//输入第一数组
cout << "Enter the second array(int, Separated by ' ', 'Enter' end)...\n";
l2=myinput(nums2,50);//输入第二数组
for(t=0;t<l2;nums1[l1++]=nums2[t++]);//把nums2连接到nums1后面
for(i=0;i<l1;i++){//排序
for(k=i,j=k+1;j<l1;j++)
if(nums1[k]>nums1[j])
k=j;
if(k-i)
j=nums1[k],nums1[k]=nums1[i],nums1[i]=j;
}
cout << "\nThe results are as follows:\n" << nums1[j=0];
for(i=1;i<l1;i++)//去重并输出
if(nums1[j]!=nums1[i])
cout << ' ' << (nums1[++j]=nums1[i]);
cout << "\n\n";
return 0;
}
运行样例: