这次实验由于自己这周遇到了太多了的事情所以没有认真的完成,但还是把代码拿出来和大家分享分享
这周太挫败了
1.acm校赛没能拿奖(这点对我打击太大了,不过我这样的人总是当时心情不爽,过了几天也就好了)
2.linux误删两个文件系统崩溃,重装了系统
3.写了一年的代码放在了移动硬盘里,结果被我摔坏了(由于重装系统的原因,代码电脑里没有。。。一年的代码。。。)
不过从中学到了许多面对事情的态度和方法,感觉这是我大学学到的东西最多的一天。
PS:由于换成了linux系统,这份代码是在linux写的(貌似和windows没啥区别啊)但上机提交时打开正常,运行时cmd中文都是乱码(都是utf-8编码)。。。不懂为什么
下面是我在网上找到的方法
在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。
如果想正确显示UTF-8字符,可以按照以下步骤操作:
1、打开CMD.exe命令行窗口
2、通过 chcp命令改变代码页,UTF-8的代码页为65001
chcp 65001
执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确显示UTF-8字符。
3、修改窗口属性,改变字体
在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改为True Type字体"Lucida Console",然后点击确定将属性应用到当前窗口。
这时使用type命令就可以显示UTF-8文本文件的内容了:
type filename.txt
4、通过以上操作并不能完全解决问题,因为显示出来的内容有可能不完全。可以先最小化,然后最大化命令行窗口,文件的内容就完整的显示出来了。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int a[10][10]; int a1, a2, Max=1; char c1, c2; void menu(); void input(); void output(); void jude(); void jude_Reflexivity(); void jude_Symmetry(); void jude_Transitive(); void jude_Antisymmetry(); void jude_Irreflexivity(); int main() { menu(); input(); output(); jude(); return 0; } void menu() { cout<<"\t\t\t"<<"离散数学之二元性质判定"<<endl; cout<<"1.集合元素依次为a,b,c,d,e"<<endl; cout<<"2.每行输入两个字母代表关系的一个元素,以0 0作为输入输入结束标记"<<endl; } void input() { memset(a, 0, sizeof(a)); while(scanf("%c %c", &c1, &c2)!=EOF) { getchar(); if(c1=='0'&&c2=='0') break; a1=c1-96; a2=c2-96; a[a1][a2]=1; Max=max(max(a1, a2), Max); } } void output() { cout<<"关系矩阵为:"<<endl; for(int i=1;i<=Max;i++) { for(int j=1;j<=Max;j++) cout<<a[i][j]<<" "; cout<<endl; } cout<<endl; } void jude() { jude_Reflexivity(); cout<<endl; jude_Symmetry(); cout<<endl; jude_Transitive(); cout<<endl; jude_Antisymmetry(); cout<<endl; jude_Irreflexivity(); cout<<endl; } void jude_Reflexivity() { cout<<"1.自反性判断"<<endl; bool flag=true; int Case=0; for(int i=1, j=1;i<=Max;i++, j++) { if(a[i][j]==0) { printf("第%d组反例:%c %c\n", ++Case, i+96, j+96); flag=false; } } if(flag) cout<<"该关系满足自反性"<<endl; } void jude_Symmetry() { cout<<"2.对称性判断"<<endl; bool flag=true; int Case=0; for(int i=1;i<=Max;i++) { for(int j=1;j<=Max;j++) { if(i>=j) continue; if(a[i][j]!=a[j][i]) { printf("第%d组反例:\n%c %c\n%c %c\n",++Case, i+96, j+96, j+96, i+96); flag=false; } } } if(flag) cout<<"该关系满足对称性"<<endl; } void jude_Transitive() { cout<<"3.传递性判断"<<endl; bool flag=true; int Case=0; for(int i=1;i<=Max;i++) { for(int j=1;j<=Max;j++) { for(int k=1;k<=Max;k++) if(a[i][j]&&a[j][k]&&!a[i][k]) { printf("第%d组反例:\n%c %c\n%c %c\n",++Case, i+96, j+96, j+96, k+96); flag=false; } } } if(flag) cout<<"该关系满足传递性"<<endl; } void jude_Antisymmetry() { cout<<"4.反对称性判断"<<endl; bool flag=true; int Case=0; for(int i=1;i<=Max;i++) { for(int j=1;j<=Max;j++) { if(i>=j) continue; if(a[i][j]&&a[j][i]) { printf("第%d组反例:\n%c %c\n%c %c\n",++Case, i+96, j+96, j+96, i+96); flag=false; } } } if(flag) cout<<"该关系满足反对称性"<<endl; } void jude_Irreflexivity() { cout<<"5.反自反性判断"<<endl; bool flag=true; int Case=0; for(int i=1, j=1;i<=Max;i++, j++) { if(a[i][j]==1) { printf("第%d组反例:%c %c\n", ++Case, i+96, j+96); flag=false; } } if(flag) cout<<"该关系满足反自反性"<<endl; }