| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 822 人关注过本帖
标题:圣诞节的困惑!!!!!急!!急!!急!!
只看楼主 加入收藏
豆芽
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-12-25
收藏
 问题点数:0 回复次数:3 
圣诞节的困惑!!!!!急!!急!!急!!
我们要做课程设计了,可是我不会做!老师把全班分成了3组,有3个题目,规定每组做一个,我只会做第二个。可是却规定我做第一个,我不会做只能求助了!拜托哪个高手帮下我,因为再过几天就要答辩了,我肯定死翘翘了!拜托了!!!对了,题目是用线形表的形式设计程序求集合的交并差!!!拜托了!!!!急切的豆芽等待热心人的帮助!!谢谢!!!
搜索更多相关主题的帖子: 圣诞节 困惑 
2005-12-25 20:31
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
   集合的并差运算?你扫描数组不就行了。比如说有A B两数组。你随便那其中的一个来扫描。从A中取出A[0],然后对比集合B中的每一位元素。有相同的就放入数组C里面。如果没的就放入集合D里面。那这样出来后C集合就是交了。但D集合你要注意了。这个时候的D数组还不完全对。你应该在拿[0]---B[N]的元素和A数组中的元素对比。如果不同的在继续放进D。这样应该可以了(这个问题没用多少时间去想。或许不太对。你自己在多想想)

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-12-26 07:42
woya1985
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-11-16
收藏
得分:0 

#include <iostream.h>
#include <stdio.h>

void BuCountbbleSort(int r[],int n)
{//冒泡排序
int i,j,k;
int exchange;
for(i=0;i<=n;i++)
{
exchange=0;
for(j=n-1;j>=i;j--)
if(r[j+1]<r[j])
{
k=r[j+1];
r[j+1]=r[j];
r[j]=k;
exchange=1;
}
if(!exchange)
break;
}
}


int BingJi(int m[],int n[],int l[],int Countaa,int Countbb)
{//求集合的并集
int i=0,j=0,k=0;
while(i<=Countaa&&j<=Countbb)
{
if(m[i]<n[j])
{//如果 m[i]<n[j]则取小的值m[i],然后i++;
l[k]=m[i];
k++;
i++;
}//endif
else if(m[i]>n[j])
{//如果 m[i]>n[j]则取小的值n[j],然后j++;
l[k]=n[j];
k++;
j++;
}//end elseif
else
{//如果 m[i]==n[j],可以任取一个值,然后i++;j++;
l[k]=m[i];
k++;
i++;
j++;
}//endelse
}//endwhile

if(i>Countaa)
{//如果i>Countaa,即数组m[i]中的元数个数较少,
//则把n[j]中的剩余元素,都付给l[]。
while(j<=Countbb)
{
l[k]=n[j];
j++;
k++;
}//endwhile
}//endif

if(j>Countbb)
{//如果j>Countbb,即数组n[i]中的元数个数较少,
//则把m[j]中的剩余元素,都付给l[]。
while(i<=Countaa)
{
l[k]=m[i];
i++;
k++;
}//endwhile
}//endif

return k;//返回生成的数组的元数个数
}//end BuCountbbleSort

int JiaoJi(int m[],int n[],int l[],int Countaa,int Countbb)
{//求集合的交集

///////////////////////////////////
//消除数组m[]中的重复元素
int w,x,y;
for(w=0;w<=Countaa;w++)
{
for(x=w+1;x<=Countaa;x++)
{
if(m[w]==m[x])
{
Countaa--;
for(y=x;y<=Countaa;y++)
{
m[y]=m[y+1];
}//endfor
x--;
}//endif
}//endfor
}//endfor

/*
//测试消除数组中的重复元素的效果用下列循环输出
int z;
for(z=0;z<=Countaa;z++)
{
printf("%d",m[z]);
}
printf("\n");
*/

//消除结束
///////////////////////////////////

///////////////////////////////////
//求交集
int i=0,j=0,k=0;
while(i<=Countaa)
{
for(j=0;j<=Countbb;j++)
{//用集合的第一个元素分别和另一个集合的各元素相比较
//然后再用第二个元素(直到最后一个元素)和另一个集合的各元素相比较
if(m[i]==n[j])
{//如果有相同的就保存到l[]中,这样同时消掉了n[]中的重复元素
l[k]=m[i];
k++;
break;
}//endif
}//endfor
i++;
}//endwhile
//求交集结束
//////////////////////////////////

return k;
}

void main()
{
int a[1000], b[1000],c[2000];
int exchange=0;
int i,CountA,CountB,CountC;

printf("input a\n");
for(i=0;i<=1000;i++)
{
scanf("%d",&a[i]);
if(a[i]==-9999)
break;
}//endfor
CountA=i-1;

BuCountbbleSort(a,CountA);//先将集合A排序

printf("\ninput b\n");
for(i=0;i<=1000;i++)
{
scanf("%d",&b[i]);
if(b[i]==-9999)
break;
}//endfor
CountB=i-1;

BuCountbbleSort(b,CountB);//集合B排序

// CountC=BingJi(a,b,c,CountA,CountB);
CountC=JiaoJi(a,b,c,CountA,CountB);

printf("\n\n");
for(i=0;i<=CountC-1;i++)
{
printf("%d ",c[i]);
}
printf("\n");
}

2005-12-27 13:29
独孤逍遥
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2005-9-25
收藏
得分:0 
??好强啊

物以方圆 义薄云天 何以载物 四海纵横
2005-12-28 10:13
快速回复:圣诞节的困惑!!!!!急!!急!!急!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038785 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved