集合的交 并 差 补 运算
来源:互联网 发布:矩阵论第二版答案华科 编辑:程序博客网 时间:2024/04/29 02:30
这是离散数学上的一个实验题,让用编程实现集合的交 并 差 补的运算。我这是借鉴的同学的。我自己水平还达不到啊。
mian.c
#include <stdio.h>#include "funcs.h"intmain (int argc, char *argv[]) {set_buf ();get_input ();printf ("********************\n");printf ("集合a 和b 的并集为:\n");do_or (a, a_l, b, b_l);print_ans ();printf ("集合a 和b 的交集为:\n");do_and (a, a_l, b, b_l);print_ans ();printf ("集合a 的补集为:\n");do_not (a, a_l);print_ans ();printf ("集合b 的补集为:\n");do_not (b, b_l);print_ans ();printf ("集合a 与集合b 之差为:\n");do_dec (a, a_l, b, b_l);print_ans ();printf ("集合b 与集合a 之差为:\n");do_dec (b, b_l, a, a_l);print_ans ();return 0;}
**********************************************************
fun.c
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "bool.h"#defineBUF_LEN(10)typedefintbuf[BUF_LEN];buf u, a, b;int ans[BUF_LEN*2];int u_l, a_l, b_l, ans_l;voidset_buf () {u_l = 0;a_l = 0;b_l = 0;ans_l = 0;}boolhas_find (int _buf[], int item, int len) {int i = 0;for (; i < len+1; ++i)if (item == _buf[i])return true;return false;}voidget_buf (buf _buf, int *len) {for (*len = 0; *len < BUF_LEN; ++*len) {char *str = malloc (16+1);printf ("<%d>:\t", *len+1);fgets (str, 16, stdin);str[strlen (str)] = 0;_buf[*len] = atoi (str);if ('q' == *str) return;fflush (stdin);/* 下面是互斥的两个事件 */if ((_buf != &*u) && !has_find (u, _buf[*len], u_l)) {--*len;}if (has_find (_buf, _buf[*len], *len-1)) {--*len;}}}voidget_input () {printf ("**注意:实验用的数据为整形,不要为难程序 = =b\n");printf ("输入不合法会默认重新输入上一个数据,不发出警告 = =b\n\n");printf ("输入全集,输入q 退出:\n");get_buf (u, &u_l);printf ("输入子集a,输入q 退出:\n");get_buf (a, &a_l);printf ("输入子集b,输入q 退出:\n");get_buf (b, &b_l);}voiddo_or (buf _a, int _a_l, buf _b, int _b_l) {int i, j;ans_l = 0;for (i = 0; i < _a_l; ++i)for (j = 0; j < _b_l; ++j) if (_a[i] == _b[j])ans[ans_l++] = _a[i];}voiddo_and (buf _a, int _a_l, buf _b, int _b_l) {int i, j;ans_l = 0;for (i = 0; i < _a_l; ++i)ans[ans_l++] = _a[i]; for (j = 0; j < _b_l; ++j)if (!has_find (ans, _b[j], ans_l))ans[ans_l++] = _b[j];}voiddo_not (buf _a, int _a_l) {int i;ans_l = 0;for (i = 0; i < u_l; ++i) if (!has_find (_a, u[i], _a_l))ans[ans_l++] = u[i];}voiddo_dec (buf _a, int _a_l, buf _b, int _b_l) {int i;ans_l = 0;for (i = 0; i < _a_l; ++i) if (!has_find (_b, _a[i], _b_l))ans[ans_l++] = _a[i];}voidprint_ans () {int i;if (!ans_l) {printf (" 空集 \n");return;}printf ("{");for (i = 0; i < ans_l; ++i) printf ("%5d%c", ans[i], i==ans_l-1 ? ' ' : ',');printf ("}\n");}
***************
bool.h
#ifndefBOOL_H#define BOOL_Htypedefintbool;#define true(1);#definefalse(0);#endif
**********
funcs.h
#ifndefFUNCS_H#defineFUNCS_H#include "bool.h"#defineBUF_LEN(10)typedefintbuf[BUF_LEN];extern buf u, a, b;extern size_t u_l, a_l, b_l;extern void set_buf ();extern void get_input ();extern void do_or (buf _a, int _a_l, buf _b, int _b_l);extern void do_and (buf _a, int _a_l, buf _b, int _b_l);extern void do_not (buf _a, int _a_l);extern void do_dec (buf _a, int _a_l, buf _b, int _b_l);extern void print_ans ();#endif
- 集合的交 并 差 补 运算
- STL finish 集合交、差、并、补运算
- 集合的交 并 补运算
- 集合的交、并、差运算
- 集合的并、交和差运算
- 集合交、并、差运算
- multiset集合容器的集合运算:并、交、差
- 用位运算来处理集合中的交,并,补(对称差)运算
- 集合的并、交和差运算的程序
- c++项目--集合的并差交综合运算
- 集合的并、交、差
- C语言 集合运算 并、交,相对补,对称差,判断两个集合是否相等,求集合幂集
- 集合的交、并、差的实现
- 集合的交、并、差的实现
- 编制一个能演示执行集合的并、交和差运算的程序。(有序表)
- 编制一个能演示执行集合的并、交和差运算的程序。(有序表)
- C语言 集合运算 并、交,相对补,对称差,判断两个集合是否相等,求集合幂集(改进幂集)
- SQL多表连接查询与集合的并、交、差运算查询
- Asp.NET下部署Web项目可能遇到的问题
- C++内存管理变革(2)
- 胡锦涛温家宝等出席西哈努克遗体告别仪式-胡锦涛-温家宝-西哈努克遗体告别式_0
- (嵌入式)busybox中TFTP服务器的使用
- PAE(物理地址扩展)
- 集合的交 并 差 补 运算
- silverlight 自定义表格
- XAMPP在Linux中安装 及phpmyadmin不显示问题
- 到了 50 岁你还愿意做编程工作吗?
- iPad mini曝光:黑白两色4种存量
- i += j ;与 i = i + j ; 的区别
- 请慎重选择你的婚姻
- 苹果10月23日或发布iPad mini
- 江西宜春1家公司发生爆燃致4死3伤-爆燃-车间倒塌