후위식 변환과 계산
페이지 정보
작성일 20-09-26 16:46본문
Download : 후위식 변환과 계산.hwp
레포트/기타
(1) 자료(資料)형
후위표기식 배열에 들어가는 자료(資料)들은 수와 연산자입니다.
우선 Terms 라는 class를 定義(정의)하고 이것의 생성자들을 이렇게 구현합니다. 후위표기식을 출력하거나 계산할 때 isalp값을 통해 그 자료(資料)의 성질을 파악하고 올바르게 출력과 계산을 할 수 있습니다. 그래서 저는 자료(資料)형에서 수와 연산자를 구분 지을 수 있는 방법을 고안해 보았습니다.
資料구조론3스택계산기






순서
후위식 변환과 계산
수식을 입력하면 후위식(postfix)으로 변환된 결과를 디스플레이하고 계산결과를 출력한 리포트입니다. 가령, 42라는 값의 수가 있다면, 그것이 진짜 42의 값을 가지는 수인지 아니면 아스키코드번호 42인 ‘*‘ 인지 컴파일러에서는 구분을 할 수가 없습니다. 그리고 괄호 앞에 연산자가 없이 숫자가 바로 되어 있는 경우 즉 “-3(-4-5)”의 수식의 경우 로 바꿀 수 있도록 설…(省略)
설명
,기타,레포트
수식을 입력하면 후위식(postfix)으로 변환된 결과를 디스플레이하고 계산결과를 출력한 리포트입니다.자료구조론3스택계산기 , 후위식 변환과 계산기타레포트 ,
Download : 후위식 변환과 계산.hwp( 31 )
다.
그리고 여는 괄호가 나올 때 바로 앞에 연산자가 있다면 괄호 자체에 1을 먼저 곱하게 하고, 혹시 음수부호가 있거나 빼기 연산자가 있다면 -1을 곱하게 합니다. sign flag bit를 여기서 사용하였습니다.
우선 단항연산자의 경우는 수식의 첫 스타트이거나 연산자의 바로 다음과 여는 괄호의 바로 다음 부분에 ‘-’가 오게 되면 단항연산을 수행하도록 수를 저장하는 배열(ftemp)에 ‘-’부호를 넣어 atof((float)ftemp);를 사용할 때 음수가 되도록 설정하였습니다.
Terms::Terms(float x) {
// 숫자가 입력됐을 때
fldigit=x;
isalp=false;
}
Terms::Terms(char x) {
// 문자가 입력됐을 때
fldigit=(char)x;
isalp=true;
}
이렇게 쓰게 되면 fldigit에는 자료(資料)가 들어가지만 isalp에서 그 자료(資料)가 수인지 연산자인지 판별할 수 있습니다. 하지만 아스키코드(ASCII Code) 때문에 수와 연산자를 확실히 구분하지 못하게 됩니다.
(2) 변환 알고리즘
문자열을 입력받아서 각각의 문자마다 정보를 판독하여 구분을 하고, 상황에 따른 플래그비트를 두어 상태에 맞게 변환이 되도록 설정하였습니다.