当前位置:文档之家› 集合运算C语言代码及报告

集合运算C语言代码及报告

一,问题重述集合中的元素为小字母a-小写字母z,实现以下运算:实现集合表示和集合的运算(并、交、差、补)判断集合之间、元素和集合之间的关系二,源程序及注释#include <iostream.h>#include <iomanip.h>#include <conio.h>#include <stdio.h>#include <process.h>#include <string.h>#include <math.h>#include <stdlib.h>char a[100],b[100],c[100];int p,q,i,j,n;char d[26],t;void init(char *a);void display(char *a);void jiao(char *a,char *b,char *c);void bing(char *a,char *b,char *c);void cha(char *a,char *b,char *c);void bu(char *a);void jihejihe(char *a,char *b);void yuansujihe(char *a);void main(){char choice;while (1){system("cls");cout << "\n\n\n\n";cout << "\t\t 静态线性表操作 \n";cout << "\t\t========================================";cout << "\n\n";cout << "\t\t 1:初始化 \n";cout << "\t\t 2:显示 \n";cout << "\t\t 3:交 \n";cout << "\t\t 4:并 \n";cout << "\t\t 5:差 \n";cout << "\t\t 6:补 \n";cout << "\t\t 7:集合与集合之间的关系 \n";cout << "\t\t 8:集合与元素之间的关系 \n";cout << "\n";cout << "\t\t 0:退出 \n";cout << "\n";cout << "\t\t请选择:" << flush;choice = getch();system("cls");switch(choice){case '1':init(a);break;case '2':display(a);break;case '3':jiao(a,b,c);break;case '4':bing(a,b,c);break;case '5':cha(a,b,c);break;case '6':bu(a);break;case '7':jihejihe(a,b);break;case '8':yuansujihe(a);break;case '0':exit(0);}}}void init(char *a)//创建一个集合cout<<"请输入集合中元素个数";cin>>n;cout<<"请输入集合之中的元素";for (i=1;i<=n;i++)cin>>a[i];}void display(char *a)//输出一个集合{cout<<"{ ";for(i=1;i<=n;i++)cout<<a[i]<<" ";cout<<"}";}void jiao(char *a,char *b,char *c)//求集合的交{int k;k=1;cout<<"请输入第一个集合中元素个数";cin>>p;cout<<"请输入集合之中的元素";for (i=1;i<=p;i++)cin>>a[i];cout<<"请输入第二个集合中元素个数";cin>>q;cout<<"请输入集合之中的元素";for (j=1;j<=q;j++)cin>>b[j];cout<<"{ ";//求集合的交for(i=1;i<=p;i++){for (j=1;j<=q;j++)if(a[i]==b[j]){cout<<a[i]<<" ";}}cout<<"}";}void bing(char *a,char *b,char *c)//求集合的并cout<<"请输入第一个集合中元素个数";cin>>p;cout<<"请输入集合之中的元素";for (i=1;i<=p;i++)cin>>a[i];cout<<"请输入第二个集合中元素个数";cin>>q;cout<<"请输入集合之中的元素";for (j=1;j<=q;j++)cin>>b[j];for(i=1;i<=p;i++){for (j=1;j<=q;j++)if(a[i]==b[j])a[i]='0';}cout<<"{ ";for(i=1;i<=p;i++)if(a[i]!='0')cout<<a[i]<<" ";for(j=1;j<=q;j++)cout<<b[j]<<" ";cout<<"}";}void cha(char *a,char *b,char *c)//求集合的差{cout<<"请输入第一个集合中元素个数";cin>>p;cout<<"请输入集合之中的元素";for (i=1;i<=p;i++)cin>>a[i];cout<<"请输入第二个集合中元素个数";cin>>q;cout<<"请输入集合之中的元素";for (j=1;j<=q;j++)cin>>b[j];for(i=1;i<=p;i++){for (j=1;j<=q;j++)if(a[i]==b[j])a[i]='0';}cout<<"{ ";for(i=1;i<=p;i++)if(a[i]!='0')cout<<a[i]<<" ";cout<<"}";}void bu(char *a)//集合的补{cout<<"请输入集合中元素个数";cin>>n;cout<<"请输入集合之中的元素";for (i=1;i<=n;i++)cin>>a[i];for(i=0;i<26;i++)d[i]=i+97;for(i=1;i<=n;i++)for (j=0;j<26;j++){if (a[i]==d[j])d[j]='0';}cout<<"{ ";for(j=0;j<26;j++)if(d[j]!='0')cout<<d[j]<<" ";cout<<"}";}void jihejihe(char *a,char *b)//两个集合之间的关系{int k;k=0;cout<<"请输入元素较少的集合A中元素个数";cin>>p;cout<<"请输入集合之中的元素";for (i=1;i<=p;i++)cin>>a[i];cout<<"请输入元素较多的集合B中元素个数";cin>>q;cout<<"请输入集合之中的元素";for (j=1;j<=q;j++)cin>>b[j];for(i=1;i<=p;i++){for (j=1;j<=q;j++)if (a[i]==b[j])k++;}if ((k==p)&&(p!=q)) cout<<"A包含于B "; else if ((k==p)&&(p==q)) cout<<"A=B";else cout<<"A与B不存在集合之间的关系";}void yuansujihe(char *a){int k;char t;k=0;cout<<"请输入集合A中元素个数";cin>>n;cout<<"请输入集合之中的元素";for (i=1;i<=n;i++)cin>>a[i];cout<<"请输入元素t";cin>>t;for(i=1;i<=n;i++)if(a[i]==t) k++;if(k==1) cout<<"t属于A";else cout<<"t不属于A";}三,运行结果显示,设第一个集合为B={a,b,c}设第二个集合为A={a,b}则运行结果依次显示为,交,并差补:设集合为{a,b,c,d,e}则补为集合关系判断元素与集合关系四,调试和运行程序过程中产生的问题及采取的措施:四,调试和运行程序过程中产生的问题及采取的措施:1,字符数组初始化。

相关主题