编写程序,求两个整数集合的并集。

下面是我编写的:#include<iostream>usingnamespacestd;intmain(void){constM=100,N=200;intNa=0,Nb... 下面是我编写的:
#include <iostream>
using namespace std;

int main(void)
{const M=100,N=200;
int Na=0,Nb=0,Nc;
double a[M],b[M],c[N];
cout<<"请输入a中元素:";
for(int i=0;i<M;i++)
{cin>>a[i];
Na++;
if(a[i]==0) break;
}
cout<<"请输入b中元素:";
for(int j=0;j<M;j++)
{cin>>b[j];
Nb++;
if(b[j]==0) break;
}
for(int k=0;k<N;k++) c[k]=a[k]; //将A中元素放入C中
for(int h=0;h<Nb-1;h++) //进入循环从b[0]开始
{for(int i=0;i<Na-1;i++) {if(b[h]==c[i]) {Nb--; break;}}
for(int k=Na-1;k<N;k++) {c[k]=b[h]; break;}
}
cout<<"C中元素有:";
for(int m=0;m<Na+Nb-2;m++) cout<<c[m];
return 0;
}
那个好像这个循环
for(int h=0;h<Nb-1;h++) //进入循环从b[0]开始
{for(int i=0;i<Na-1;i++) {if(b[h]==c[i]) {Nb--; break;}}
for(int k=Na-1;k<N;k++) {c[k]=b[h]; break;}
}
有问题,帮我看看问题在哪,好吗?
展开
 我来答
希茜Cqa68
2009-05-11 · TA获得超过1238个赞
知道小有建树答主
回答量:860
采纳率:0%
帮助的人:1068万
展开全部
/*
修改了一下你的算法
*/

#include <iostream>
using namespace std;

int main(void)
{
const M=100,N=200;
int Na=0,Nb=0,index;
double a[M],b[M],c[N],mid[N];
double pre;
cout<<"请输入a中元素:\n";
for(int i=0;i<M;i++)
{
cin>>a[i];
if(a[i]==0) break;
Na++; //位置调整了
}
cout<<"请输入b中元素:\n";
for(int j=0;j<M;j++)
{
cin>>b[j];
if(b[j]==0) break;
Nb++; //位置调整了
}

cout<<endl;
cout<<"DEBUG Na="<<Na<<",Nb="<<Nb<<endl; //debug
for(int k=0;k<Na;k++) c[k]=a[k]; //将A中元素放入C中
for(k=Na;k<Na+Nb;k++) c[k]=b[k-Na]; //将B中元素加入C中

cout<<"去除重复前,C中元素为:";
for(k=0;k<Na+Nb;k++) cout<<c[k]<<" ";

//冒泡排序
for(i=Na+Nb-1;i>0;i--)
{
for(j=0;j<i;j++)
{
if(c[j]>c[j+1])
{
double temp=c[j];
c[j]=c[j+1];
c[j+1]=temp;
}
}
}
//去除重复
pre=0;
index=0;
for(k=0;k<Na+Nb;k++)
{
if(c[k]==pre) continue;
mid[index]=c[k]; //将不重复的元素放到另一个数组
index++;
pre=c[k];
}
//重设不重复数组元素
for(k=0;k<index;k++) c[k]=mid[k];
for(k=index;k<Na+Nb;k++) c[k]=0;

cout<<endl;
cout<<"排序、去除重复后,C中元素为:";
for(k=0;k<Na+Nb;k++)
{
if(c[k]!=0)
cout<<c[k]<<" ";
}

cout<<endl;
return 0;
}
wanfustudio
2009-05-12 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3725万
展开全部
不难,好好琢磨一下,如果知道并集的概念,就不难作出来了

不想改程序,新写了一个:

#include<iostream.h>

void main()
{
int a[10]={1,3,4,6,7,8,9,2,6,10},b[10]={8,2,5,96,5,8,3,12,6,12},c[20];
int i,j=0,k;

c[0] = a[0];
j++;

for(i = 0; i < 10; i++)
{
for(k = 0; k < j; k++)
{
if(a[i] == c[k])
{
break;
}
}
if(k == j)
{
c[j++] = a[i];
}
}

for(i = 0; i < 10; i++)
{
for(k = 0; k < j; k++)
{
if(b[i] == c[k])
{
break;
}
}
if(k == j)
{
c[j++] = b[i];
}
}

for(i = 0; i < j; i++)
{
cout << c[i]<<endl;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cd3675a
2009-05-11 · TA获得超过335个赞
知道答主
回答量:191
采纳率:100%
帮助的人:173万
展开全部
算法有问题
#include <iostream>
using namespace std;

int main(void)
{const M=100,N=200;
int Na=0,Nb=0,Nc,h;
double a[M],b[M],c[N];
cout<<"请输入a中元素:";
for(int i=0;i<M;i++)
{cin>>a[i];
Na++;
if(a[i]==0) break;
}
cout<<"请输入b中元素:";
for(int j=0;j<M;j++)
{cin>>b[j];
Nb++;
if(b[j]==0) break;
}
for(int k=0;k<Na;k++) c[k]=a[k]; //将A中元素放入C中
for(i=0;i<Na;i++)
{
for(h=0;h<Nb;h++)//进入循环从b[0]开始
{
if(b[h]==c[i]) {
for(int l=h;l<Nb-1;l++)
b[l]=b[l+1];
h--;
Nb--;}
}
}
k=Na-1;
for(h=0;h<Nb;h++)
{a[k]=b[h];
k++;}
cout<<"C中元素有:";
for(int m=0;m<Na+Nb-1;m++) cout<<a[m]<<" ";
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
花开月夜读书9143
2009-05-11 · TA获得超过151个赞
知道答主
回答量:164
采纳率:0%
帮助的人:167万
展开全部
for(int h=0;h<Nb-1;h++) //进入循环从b[0]开始
{
bool bExist = false;
for(int i=0;i<Na-1;i++) {if(b[h]==c[i]) {bExist = true; break;}}
if( !bExist ){ c[k++] = b[h];}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式