资源简介
C语言实现三种闭包算法,能够实现传递,自反,对称闭包

代码片段和文件信息
#include
#define M 38
#define N 6
int aijkfstb[M]e[N]c[N][N]g[N][N]h[N][N]d[N][N]={0}; /*定义全局变量,使写程序更便捷*/
void main()
{
void initiate(int c[]int n);
void sort_e();
void change_d();
void print();
void relation1();
void relation2();
void relation3(); /*声明子函数*/
printf(“集合有几个元素?:\n“);
scanf(“%d“&f);
/*要求输入集合和该集合上的一个关系,因为已知这两个才能将这个关系的关系矩阵画出来*/
printf(“输入集合的元素(是数字且输入时数字间用空格隔开):\n“);
initiate(ef); /*给e数组赋值*/
printf(“关系中有几个有序对?:\n“);
scanf(“%d“&a);
printf(“输入关系(只输入每个有序对的第一、二元素且输入时数字间用空格隔开):\n“);
initiate(b2*a); /*给b数组赋值*/
sort_e(); /*使e数组中的元素按从小到大的排序排列*/
change_d(); /*把是1的位置值变为1*/
printf(“关系的关系矩阵为:\n“);
print();
relation1(); /*求关系的自反闭包*/
relation2(); /*求关系的对称闭包*/
relation3(); /*求关系的传递闭包*/
}
void initiate(int c[]int n)
{
for(i=0;i scanf(“%d“&c[i]);
}
void sort_e()
{
for(i=0;i {
k=i;
for(j=i+1;j if(e[j] if(k!=i)
{
t=e[i];
e[i]=e[k];
e[k]=t;
}
} /*用选择法排序*/
}
void change_d() /*把是1的位置值变为1*/
{
for(i=0k=1;k {
for(j=0;j if(b[i]==e[j])
{
s=j;
break;
}
for(j=0;j if(b[k]==e[j])
{
t=j; /*找矩阵中值为1的位置*/
break;
}
d[s][t]=1; /*找到位置后把该位置的值变为1*/
}
}
void print()
{
for(i=0;i {
for(j=0;j printf(“%d “d[i][j]);
printf(“\n“);
}
}
void relation1()
{
for(i=0;i for(j=0;j c[i][j]=d[i][j]; /*将矩阵的值赋给c数组*/
for(i=0;i {
for(j=0;j {
if(i==j)
c[i][j]=1; /*使矩阵的主对角线上的值全变为1*/
}
}
printf(“----------------------------------------\n“);
printf(“自反闭包为\n“);
for(i=0;i {
for(j=0;j {
printf(“%d “c[i][j]);
}
printf(“\n“);
}
printf(“以集合表示为r(R):\n“);
for(i=0;i for(j=0;j if(c[i][j]!=0)
printf(“<%d%d>“i+1j+1);
printf(“\n“);
}
void relation2()
{
for(i=0;i for(j=0;j g[i][j]=d[i][j]; /*将矩阵的值赋给g数组*/
printf(“----------------------------------------\n“);
for(i=0;i {
for(j=0;j {
if(g[i][j]==1)
{
g[j][i]=1; /*把值为1的位置的对称位置的值也变为1*/
}
}
}
printf(“对称闭包为\n“);
for(i=0;i {
for(j=0;j {
printf(“%d “g[i][j]);
}
printf(“\n“);
}
printf(“以集合表示为s(R):\n“);
for(i=0;i for(j=0;j if(g[i][j]!=0)
printf(“<%d%d>“i+1j+1);
printf(“\n“);
}
void relation3()
{
int result(int xint yint z);
for(i=0;i for(j=0;j h[i][j]=d[i][j]; /*将矩阵的值赋给h数组*/
printf(“-------------------------------------\n“);
printf(“传递闭包为\n“);
for(k=0;k {
printf(“*************
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 33792 2010-06-01 11:19 求三种闭包\Debug\vc60.idb
文件 45056 2010-06-01 11:18 求三种闭包\Debug\vc60.pdb
文件 192566 2010-05-30 23:32 求三种闭包\Debug\www.exe
文件 191424 2010-05-30 23:32 求三种闭包\Debug\www.ilk
文件 213616 2010-05-30 22:37 求三种闭包\Debug\www.pch
文件 443392 2010-05-30 23:32 求三种闭包\Debug\www.pdb
文件 192571 2010-06-01 11:18 求三种闭包\Debug\三种闭包.exe
文件 211300 2010-06-01 11:18 求三种闭包\Debug\三种闭包.ilk
文件 17328 2010-06-01 11:18 求三种闭包\Debug\三种闭包.obj
文件 213616 2010-06-01 10:41 求三种闭包\Debug\三种闭包.pch
文件 451584 2010-06-01 11:18 求三种闭包\Debug\三种闭包.pdb
文件 4255 2010-05-30 23:37 求三种闭包\www.dsp
文件 512 2010-05-30 22:33 求三种闭包\www.dsw
文件 33792 2010-05-30 23:37 求三种闭包\www.ncb
文件 48640 2010-05-30 23:37 求三种闭包\www.opt
文件 1263 2010-05-30 23:32 求三种闭包\www.plg
文件 3920 2010-06-01 11:18 求三种闭包\三种闭包.cpp
文件 3427 2010-06-01 10:41 求三种闭包\三种闭包.dsp
文件 524 2010-06-01 12:08 求三种闭包\三种闭包.dsw
文件 33792 2010-06-01 12:08 求三种闭包\三种闭包.ncb
文件 48640 2010-06-01 12:08 求三种闭包\三种闭包.opt
文件 1149 2010-06-01 11:18 求三种闭包\三种闭包.plg
目录 0 2010-06-01 11:18 求三种闭包\Debug
目录 0 2010-06-01 12:08 求三种闭包
----------- --------- ---------- ----- ----
2386159 24
- 上一篇:C++自绘柱状图.rar
- 下一篇:泛型链表——C语言实现
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论