4. 계산기 함수에 이용하는 열거형과 데이터
글 작성자: HEROHJK
일반적으로 계산기는 문자를 파싱해서 중위표기된 식을 후위표기된 식으로 변환 후
각 문자를 판별해서 연산을 합니다.
제가 만드려는 계산기는 미리 데이터를 정의해서, 그 데이터의 값이 연산자인지, 값인지를 판별하여
후에 있는 수고를 조금 덜어주는 방식으로 만듭니다.
구조는 다음과 같습니다.
type -> 값의 타입을 정의합니다.(계산기 열거형)
value -> 값을 저장합니다.(문자열)
오직 생성자만 있는 구조체입니다.
계산기 열거형의 종류는 다음과 같습니다.
value -> 값입니다. 계산기이므로 수가 들어갑니다.
dot -> 점입니다. 소수점인경우입니다.
operator -> 순서대로 곱셈,나눗셈,덧셈,뺄셈 기호입니다.
Paren -> 왼쪽괄호, 오른쪽 괄호입니다.
delimiter -> 구분자입니다
etc -> 디폴트값입니다.
스위프트에서 구현된 코드는 다음과 같습니다.
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 32 33 | import Swift //계산기 열거형 enum CalculatorEnumeration{ //값(숫자) case value //소수점 case dot //연산자들 case operatorMultiple case operatorDivide case operatorPlus case operatorMinus //왼쪽괄호 case lParen //오른쪽괄호 case rParen //구분자 case delimiter //그외 case etc } //계산기 데이터 struct CalculatorData{ public var value: String public var type: CalculatorEnumeration public init(_ dataType : CalculatorEnumeration, _ str : String){ value=str type=dataType } } | cs |
순수하게 값만 보관하고, 데이터 내부적인 연산은 일체 없습니다.
반응형
댓글
이 글 공유하기
다른 글
-
6. 중위식 데이터 배열 -> 후위식 데이터 배열로 변환
6. 중위식 데이터 배열 -> 후위식 데이터 배열로 변환
2017.11.26 -
5. 중위식 문자열 -> 전용 데이터 배열로 변환(파싱)
5. 중위식 문자열 -> 전용 데이터 배열로 변환(파싱)
2017.11.26 -
3. 데큐 구조체
3. 데큐 구조체
2017.11.26 -
2. 스택 구조체
2. 스택 구조체
2017.11.23