CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
应付数电实验期末考试用的…按顺序输进去六位数字,自动生成每个 JK 触发器的卡诺图。
生成 Excel 可以直接打开的 csv 表格
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<bits/stdc++.h>
using namespace std;
char f[8],c=',';
int a[6];
int main()
{
for(int i=0; i<6; ++i)cin>>a[i];
ofstream cout("KarnaughMap.csv");
cout<<"NextMap\n"<<c<<"State"
<<c<<"$Q_2$"<<c<<"$Q_1$"<<c<<"$Q_0$"<<c<<"\n"
<<c<<"-"<<c<<"\n";
for(int i=0; i<6; ++i)
{
cout<<c<<a[i];
for(int x=2; ~x; --x)cout<<c<<(a[(i+1)%6]>>x&1);
cout<<c<<"\n";
}
for(int x=2; ~x; --x)
for(int j=1; ~j; --j)
{
fill(f,f+8,'X');
for(int i=0; i<6; ++i)
if(j!=(a[i]>>x&1))
f[a[i]]='0'+(j==(a[(i+1)%6]>>x&1));
cout<<(j?"$J_":"$K_")<<x<<"$Map\n"<<c<<"$Q_0\\setminus Q_1Q_2$"
<<c<<"00"<<c<<"01"<<c<<"11"<<c<<"10"<<c<<"\n"
<<c<<"-"<<c<<"\n"
<<c<<"0"<<c<<f[0]<<c<<f[4]<<c<<f[6]<<c<<f[2]<<c<<"\n"
<<c<<"1"<<c<<f[1]<<c<<f[5]<<c<<f[7]<<c<<f[3]<<c<<"\n";
}
}
生成 Markdown 格式的表格
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<bits/stdc++.h>
using namespace std;
char f[8],c='|';
int a[6];
int main()
{
for(int i=0; i<6; ++i)cin>>a[i];
ofstream cout("KarnaughMap.md");
cout<<"NextMap\n"<<c<<"State"
<<c<<"$Q_2$"<<c<<"$Q_1$"<<c<<"$Q_0$"<<c<<"\n"
<<c<<"-"<<c<<"\n";
for(int i=0; i<6; ++i)
{
cout<<c<<a[i];
for(int x=2; ~x; --x)cout<<c<<(a[(i+1)%6]>>x&1);
cout<<c<<"\n";
}
for(int x=2; ~x; --x)
for(int j=1; ~j; --j)
{
fill(f,f+8,'X');
for(int i=0; i<6; ++i)
if(j!=(a[i]>>x&1))
f[a[i]]='0'+(j==(a[(i+1)%6]>>x&1));
cout<<(j?"$J_":"$K_")<<x<<"$Map\n"<<c<<"$Q_0\\setminus Q_1Q_2$"
<<c<<"00"<<c<<"01"<<c<<"11"<<c<<"10"<<c<<"\n"
<<c<<"-"<<c<<"\n"
<<c<<"0"<<c<<f[0]<<c<<f[4]<<c<<f[6]<<c<<f[2]<<c<<"\n"
<<c<<"1"<<c<<f[1]<<c<<f[5]<<c<<f[7]<<c<<f[3]<<c<<"\n";
}
}