编写程序,求两个整数集合的并集。
下面是我编写的:#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;}
}
有问题,帮我看看问题在哪,好吗? 展开
#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;}
}
有问题,帮我看看问题在哪,好吗? 展开
4个回答
展开全部
/*
修改了一下你的算法
*/
#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;
}
修改了一下你的算法
*/
#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;
}
展开全部
不难,好好琢磨一下,如果知道并集的概念,就不难作出来了
不想改程序,新写了一个:
#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;
}
}
不想改程序,新写了一个:
#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;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
算法有问题
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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];}
}
{
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];}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询