https://github.com/shinkeonkim/tabular-method-cli
tabular method cpp src
https://github.com/shinkeonkim/tabular-method-cli
cpp-cli tabular-methods
Last synced: 4 months ago
JSON representation
tabular method cpp src
- Host: GitHub
- URL: https://github.com/shinkeonkim/tabular-method-cli
- Owner: shinkeonkim
- License: mit
- Created: 2020-04-16T02:13:21.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-05-11T22:34:18.000Z (about 5 years ago)
- Last Synced: 2025-01-12T00:41:59.615Z (6 months ago)
- Topics: cpp-cli, tabular-methods
- Language: C++
- Homepage:
- Size: 108 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# tabular-method-cli
![]()
![]()
![]()
![]()
![]()
![]()
![]()
## introduce
국민대학교 논리회로설계 강의 시간 중, tabular method를 배우게 되었습니다.강의 중 과제로 만들게 된 tabular method cli 소스입니다.
## usage
main.cpp를 g++ 컴파일러로 컴파일/실행해주세요.## global variable
```cpp
struct rows {
vector minterms; // minterm 목록(뭉쳐지는 minterm들을 하나의 벡터에 저장함.)
vector expression; // minterm 목록에서 대응되는 이진수 표현
};int lang = 0; // 선택된 언어
unsigned int numOfVar; // 변수 개수
unsigned int numOfMinterm; // minterm 개수
unsigned int numOfDontcare; // dontcare 개수
vector minterm; // 입력받은 minterm 벡터
vector dontcare; // 입력받은 dontcare 벡터
vector> termList; //minterm, dontcare를 합쳐논 목록
vector totalrow; // PIchart, PI, EPI를 구하는 최종 minterm들을 모아놓음.
vector> PIchart; //PIchart date
vector EPI; // EPI 목록
vector PI; // PI 목록
vector checkPI; // EPI, PI를 활용해 논리식에 포함되는 PI를 판단하는 dfs를 수행할 때, 중복 방지 check 배열 역할
map M; // key = minterm, value = 0+ or -1, if value == -1 -> dontcare
int ansCount = (int)1e8; // 최대값 init
int ansSizeSum = -1; // 최소값 init
vector ansCheck; // dfs 수행중, 최종 논리식을 구성하는 PI가 무엇인지 저장해놓는 벡터vector > msg; // 언어별 메세지
```## function
### main
```cpp
int main() {
inputLanguage();
if(!inputNumbers()) {
inputErrorMsg();
return 0;
}
tabularMethod();
}
```### others function
```cpp
void inputLanguage(); // input language number
void printLine(); // print "-" * 50
void printLine(int k); // print "-" * kbool inputNumbers(); // input numbers
bool mintermValidation(); //minterm이 유효한가
bool dontcareValidation(); // dontcare가 유효한가
void inputErrorMsg(); // input Error 메세지 출력void tabularMethod(); // tabular method 전체
int countOne(vector V); // 이진화된 minterm에서 1의 개수를 return
void setTermList(); // 그룹핑 전에, minterm 세팅(1의 개수에 따라 분류하기)
void printTermList(); // 그룹핑 과정 중, 1의 개수에 따라 분류된 term 목록 출력
void deleteDuplicatedTermList(); // 그룹핑 과정 중에, 중복되게 그룹핑 된 minterm 목록 제거int termDiff(vector V1, vector V2); // 두 이진화된 minterm의 차이 return
void grouping(); // 그룹핑
void makePIchart(); // PI chart 생성 함수
void printPIchart(); // PI chart 출력 함수
void findEPInPI(); // EPI, PI 를 찾는 함수
void PIdfs(int idx); // PI를 선택할지, 안선택할지를 dfs로 탐색함.
void derivecheckedPI(); // PIdfs 과정중, 맨 마지막 PI까지 결정했을 때, 결과값을 확인하는 함수.
void printEPInPI(); // EPI, PI 를 출력하는 함수
void findlogic(); // 최종 논리식 검출 함수void printMinterm(vector V); // minterm 출력
void printExpression(vector V); // 이진 표현을, 알파벳으로 변환 출력
void printfinalExpression(vector V); // 최종 논리식 변환 출력
void testFunc(); // 테스트 함수
```## Lang setting
- KOR/ENG version
- KOR
- ENG
## Example
#### 0
#### 1
#### 2
#### 3
![]()