项目作者: shinkeonkim

项目描述 :
tabular method cpp src
高级语言: C++
项目地址: git://github.com/shinkeonkim/tabular-method-cli.git
创建时间: 2020-04-16T02:13:21Z
项目社区:https://github.com/shinkeonkim/tabular-method-cli

开源协议:MIT License

下载


tabular-method-cli









introduce

국민대학교 논리회로설계 강의 시간 중, tabular method를 배우게 되었습니다.

강의 중 과제로 만들게 된 tabular method cli 소스입니다.

usage

main.cpp를 g++ 컴파일러로 컴파일/실행해주세요.

global variable

  1. struct rows {
  2. vector <int> minterms; // minterm 목록(뭉쳐지는 minterm들을 하나의 벡터에 저장함.)
  3. vector <int> expression; // minterm 목록에서 대응되는 이진수 표현
  4. };
  5. int lang = 0; // 선택된 언어
  6. unsigned int numOfVar; // 변수 개수
  7. unsigned int numOfMinterm; // minterm 개수
  8. unsigned int numOfDontcare; // dontcare 개수
  9. vector <int> minterm; // 입력받은 minterm 벡터
  10. vector <int> dontcare; // 입력받은 dontcare 벡터
  11. vector<vector<rows>> termList; //minterm, dontcare를 합쳐논 목록
  12. vector<rows> totalrow; // PIchart, PI, EPI를 구하는 최종 minterm들을 모아놓음.
  13. vector<vector<int>> PIchart; //PIchart date
  14. vector <rows> EPI; // EPI 목록
  15. vector <rows> PI; // PI 목록
  16. vector <int> checkPI; // EPI, PI를 활용해 논리식에 포함되는 PI를 판단하는 dfs를 수행할 때, 중복 방지 check 배열 역할
  17. map <int, int> M; // key = minterm, value = 0+ or -1, if value == -1 -> dontcare
  18. int ansCount = (int)1e8; // 최대값 init
  19. int ansSizeSum = -1; // 최소값 init
  20. vector <int> ansCheck; // dfs 수행중, 최종 논리식을 구성하는 PI가 무엇인지 저장해놓는 벡터
  21. vector <vector <string>> msg; // 언어별 메세지

function

main

  1. int main() {
  2. inputLanguage();
  3. if(!inputNumbers()) {
  4. inputErrorMsg();
  5. return 0;
  6. }
  7. tabularMethod();
  8. }

others function

  1. void inputLanguage(); // input language number
  2. void printLine(); // print "-" * 50
  3. void printLine(int k); // print "-" * k
  4. bool inputNumbers(); // input numbers
  5. bool mintermValidation(); //minterm이 유효한가
  6. bool dontcareValidation(); // dontcare가 유효한가
  7. void inputErrorMsg(); // input Error 메세지 출력
  8. void tabularMethod(); // tabular method 전체
  9. int countOne(vector<int> V); // 이진화된 minterm에서 1의 개수를 return
  10. void setTermList(); // 그룹핑 전에, minterm 세팅(1의 개수에 따라 분류하기)
  11. void printTermList(); // 그룹핑 과정 중, 1의 개수에 따라 분류된 term 목록 출력
  12. void deleteDuplicatedTermList(); // 그룹핑 과정 중에, 중복되게 그룹핑 된 minterm 목록 제거
  13. int termDiff(vector <int> V1, vector<int> V2); // 두 이진화된 minterm의 차이 return
  14. void grouping(); // 그룹핑
  15. void makePIchart(); // PI chart 생성 함수
  16. void printPIchart(); // PI chart 출력 함수
  17. void findEPInPI(); // EPI, PI 를 찾는 함수
  18. void PIdfs(int idx); // PI를 선택할지, 안선택할지를 dfs로 탐색함.
  19. void derivecheckedPI(); // PIdfs 과정중, 맨 마지막 PI까지 결정했을 때, 결과값을 확인하는 함수.
  20. void printEPInPI(); // EPI, PI 를 출력하는 함수
  21. void findlogic(); // 최종 논리식 검출 함수
  22. void printMinterm(vector <int> V); // minterm 출력
  23. void printExpression(vector <int> V); // 이진 표현을, 알파벳으로 변환 출력
  24. void printfinalExpression(vector <int> V); // 최종 논리식 변환 출력
  25. void testFunc(); // 테스트 함수

Lang setting

  • KOR/ENG version

    • KOR

    • ENG

Example

0

1

2

3