资源简介
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语言实现
- myshell:操作系统编程-自己用C语言写
- 七参数坐标转换C语言代码
- c语言winsock 实现简单域名解析(DNS
- c语言项目五子棋对战局域网.rar
- C语言大作业西北工业大学
- C语言航空客运订票系统
- c语言实现远程控制鼠标
- linux下C语言编写的学生信息管理系统
- 300个C语言程序范例
- C语言、Python实现TF-IDF算法
- c语言 程序填空题题库
- MySQL——长途汽车管理系统c语言版,
- 基于ZigBee技术的智能灌溉系统研究与
- c语言课程设计图书信息管理系统
- 电话费查询系统(C语言文字)
- 操作系统 内存分配与回收 C语言模拟
- 使用c语言写的卷积运算程序
- ACM HDU 2000->2099 解题报告
- 学生学籍管理系统c语言实现
- 用c语言编写的一个中国象棋
- 分支定界算法C语言实现源程序
- C语言 聊天室
- STM32 LCD12864并口驱动实验 完整C语言代
- MSP430单片机秒表程序完整 完整C语言代
- 费诺编码的C语言实现
- c语言求硬币找零钱问题
- C语言图书管理课设报告
- Verilog C语言 实现CRC16校验 高低字节分
- c语言学习例题.docx
评论
共有 条评论